При написании программ на языке Java рано или поздно встанет необходимость чтения и записи информации в файл. Для этого в языке предусмотрены следующие инструменты для ввода и вывода данных: класс Writer для записи и Reader для чтения. Наследниками этих классов являются классы FileWriter и FileReader, удобные для работы непосредственно с файлами.
Простой пример записи в файл в Java
Перед тем как создавать точку входа в программу, нужно прописать импорты (необходимые классы находятся в библиотеке java.io*, пропишем звездочку, т. к. в дальнейшем понадобятся еще классы из этой библиотеки). Импорт в редакторе должен иметь такой вид:
Затем внутри произвольного класса пишем метод main, в котором в свою очередь создаем экземпляр класса FileWriter и записываем его в переменную write:
FileWriter writer = new FileWriter(«text.txt»);
При запуске этой программы будет создан файл text.txt в корне проекта. Для того чтобы записать что-нибудь в этот файл, нужно обратиться к методу write() класса Writer, метод write() принимает в качестве аргумента строку, напишем туда что-нибудь:
writer.write(«пример записи в файл в Java»);
При работе с вводом выводом данных необходимо также учитывать исключительные ситуации по причине того, что мы не всегда знаем, что будет в этих данных. Компилятор не пропустит данный код без специальной конструкции throws Exception, которую нужно вставить в сигнатуре метода main. Также нужно позаботиться о выходе из потока, после метода write() нужно закрыть поток при помощи метода close(). Как должен выглядеть код на этом этапе, показано на рисунке ниже.
При запуске программы в корне проекта появится файл text.txt, в котором будет написано «пример записи в файл в Java». Однако данный пример годится только для ознакомительных целей, чтобы применить его в «боевых» условиях нужно провести небольшой рефакторинг.
Рефакторинг
Первое, что нужно сделать, — заключить код, отвечающий за ввод вывод данных в конструкцию try — catch (так легче управлять исключениями и применять свои исключения). Затем нужно создать отдельную переменную с типом File, куда можно записать адрес и название файла (это удобно, т. к. часто нужно работать с несколькими файлами, их помещают в отдельные переменные и обрабатывают циклом, и только затем результирующая переменная вставляется как параметр в FileWriter).
Также хорошей практикой при работе с потоками ввода/вывода считается использование буфера (класс FileWriter обращается к диску, если данных много это может потребовать много памяти, поэтому разумно манипулировать данными, используя буфер), для этого применяется класс BufferedWriter, а FileWriter записывается в скобки в качестве параметра. Для освобождения буфера вызывается метод flush(), его можно прописать перед методом close(), теперь код будет выглядеть так, как показано ниже.
Как записать Java в файл построчно
Каждый раз при компиляции данного кода в консоли будет перезаписываться одна и та же запись. Как сделать так, чтобы при запуске программы в файл записывалась новая информация построчно? Для этого в первую очередь нужно написать ключевое слово true вторым параметром при создании FileWriter:
BufferedWriter writer = new BufferedWriter(new FileWriter(myFile, true));
Каждый раз при компиляции программа будет записывать в файл строку, которая находится в методе write(), без переноса на следующую строку. В нашем случае получилось так:
пример записи в Java пример записи в Java пример записи в Java
Простой способ переноса строки — это добавление оператора /n к строковому аргументу метода write(), однако такой способ не будет работать в разных операционных системах. Для того чтобы записать файл построчно на различных платформах, нужно использовать метод line.separator класса System. В следующем примере видно, как этот метод записать в переменную lineSeparator, которую потом можно использовать в строковом аргументе метода write():
String lineSeparator = System.getProperty(«line.separator»);
Окончательно код будет выглядеть так, как показано ниже.
Результат выполнения данного кода будет следующим: в файле text.txt при троекратном запуске программы появятся строки «пример записи в Java».
Источник: fb.ru
Как записать в файл на Java? Примеры с FileWriter, BufferedWriter, Files и FileOutputStream
Java предоставляет множество способов записи данных файл, поэтому сегодня мы рассмотрим на примере наиболее популярные способы.
Как записать в файл. Теория
FileWriter — это самый простой способ записать информацию в файл. Он предоставляет перегруженный метод write() для записи int, байтового массива и String в файл. FileWriter отлично подходит для записи небольших объемов данных.
BufferedWriter — почти аналогичен FileWriter, но использует внутри себя буфер для записи данных в файл. Если вам нужно записать в файл большие объемы информации, то ваш выбор должен пасть на BufferedWriter.
FileWriter и BufferedWriter хорошо справляются с записью текстовой информации в файл, но когда стоит задача записывать в файл данные потока, то желательно использовать FileOutputStream .
Files — вспомогательный класс для работы с файлами. Он содержит метод, который внутри себя использует OutputStream для записи массива байтов в файл.
Пишем в файл на Java. Практика
Ниже приведена программа для записи информации в файл с помощью классов FileWriter, BufferedWriter, FileOutputStream и Files .
Источник: javadevblog.com
Как создать файл в Java?
Обработка файлов в Java необходима для выполнения различных задач, таких как создание, чтение, запись и т. д. В этой статье я расскажу вам, как создать файл в Java с использованием различных методов.
Одна из главных причин популярности Java – независимость от платформы. Java по-прежнему является актуальным языком программирования, который не имеет признаков снижения популярности, и поэтому его стоит изучать. Большинство разработчиков выбирают его как свой первый язык программирования, потому что его легко выучить.
Поток выполнения Java-программы
Все языки программирования высокого уровня (также называемые третьим поколением) позволяют писать программы на языке, аналогичном (хотя и гораздо более простом), чем естественный язык. Программа высокого уровня называется исходным кодом.
Что такое файл в Java?
Файл – это не что иное, как простое хранилище данных на языке Java. Файловая система может реализовывать ограничения для определенных операций, таких как чтение, запись и выполнение. Эти ограничения известны как права доступа.
При чтении файла в Java мы должны знать класс файлов Java. Класс Java File представляет файлы и имена каталогов в абстрактной манере. Класс File имеет несколько методов для работы с каталогами и файлами, таких как создание новых каталогов или файлов, удаление и переименование каталогов или файлов и т. д. Объект File представляет фактический файл / каталог на диске.
Теперь давайте разберемся с различными методами создания файла.
Методы для создания файла в Java
1. Создайте файл с классом java.io.File
Вам нужно использовать метод File.createNewFile(). Этот метод возвращает логическое значение:
- истина, если файл выполнен.
- false, если файл уже существует или операция по какой-то причине не открывается.
Этот метод также генерирует исключение java.io.IOException, когда он не может создать файл.
Когда мы создаем объект File, передавая имя файла, он может быть с абсолютным путем, или мы можем предоставить только имя файла, или мы можем предоставить относительный путь. Для неабсолютного пути объект File пытается найти файлы в корневом каталоге проекта.
Если мы запустим программу из командной строки, для неабсолютного пути объект File попытается найти файлы из текущего каталога. Экземпляры класса File являются неизменяемыми; то есть, после создания абстрактный путь, представленный объектом File, никогда не изменится.
Теперь давайте рассмотрим небольшой пример и разберемся, как он работает.
File file = new File(«c://temp//testFile1.txt»); //create the file. if (file.createNewFile()) < System.out.println(«File is created!»); >else < System.out.println(«File already exists.»); >//write content FileWriter writer = new FileWriter (file); writer.write(«Test data»); writer.close();
Пожалуйста, обратите внимание, что этот метод будет только создавать файл, но не записывать в него никакого содержимого. Теперь давайте двигаться дальше и рассмотрим следующий метод.
2. Создайте файл с классом java.io.FileOutputStream
Если вы хотите создать новый файл и в то же время, если хотите записать в него некоторые данные, вы можете использовать метод записи FileOutputStream. В Java FileOutputStream является классом потока байтов. Чтобы записать данные в файл, вы должны преобразовать данные в байты, а затем сохранить их в файл.
String data = «Test data»; FileOutputStream out = new FileOutputStream(«c://temp//testFile2.txt»); out.write(data.getBytes()); out.close();
Класс FileOutputStream хранит данные в виде отдельных байтов. Может использоваться для создания текстовых файлов. Файл представляет собой хранилище данных на втором носителе, таком как жесткий диск или компакт-диск. Метод FileOutputStream.write() автоматически создает новый файл и записывает в него содержимое.
3. Создайте файл с помощью Java.nio.file.Files – Java NIO
Files.write() – лучший способ создать файл, и он должен быть вашим предпочтительным подходом в будущем, если вы его еще не используете. Это хороший вариант, потому что нам не нужно беспокоиться о закрытии ресурсов ввода-вывода. Каждая строка представляет собой последовательность символов и записывается в файл последовательно, каждая строка заканчивается разделителем строк платформы.
public static Path createFile(Path path, FileAttribute. attrs) throws IOException
Создает новый и пустой файл, и если файл уже существует, то будет ошибка.
путь – путь для создания файла.
attrs – необязательный список атрибутов файла, устанавливаемых атомарно при создании.
String data = «Test data»; Files.write(Paths.get(«c://temp//testFile3.txt»); data.getBytes()); //or List lines = Arrays.asList(«1st line», «2nd line»); Files.write(Paths.get(«file6.txt»); lines, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.APPEND);
Далее, давайте посмотрим на создание временного файла.
4. Java также может создавать временные файлы
Создание временного файла в java может потребоваться во многих сценариях, но в основном это происходит во время модульных тестов, где вы не хотите сохранять результаты. Как только тестовый пример закончен, вас не волнует содержимое файла.
Создание временного файла с использованием java.io.File.createTempFile()
Public class TemporaryFileExample < Public static void main(string[] args)< try< final path path = Files.createTempFile(«myTempFile»,».txt»); System.out.println(«Temp file : » + path); // delete file on exist. path.toFile().deleteonExit(); >catch (IOException e) < e.printStackTrace(); >> >
с использованием NIO
Public class TemporaryFileExample < Public static void main(string[] args)< File temp; try< temp = File.createTempFile(«myTempFile» , «.txt»); System.out.println(«Temp file created : » + temp.getAbsolutePath()); >catch (IOException e) < e.printStackTrace(); >> >
Для создания временного файла используются следующие два метода.
1. createTempFile(Path, String, String, FileAttribute… attrs) – создает файл tmp в указанном каталоге.
Вышеуказанный метод принимает четыре аргумента.
Путь -> указать каталог, в котором будет создан файл.
Строка -> чтобы упомянуть префикс имени файла. Используйте ноль, чтобы избежать префикса.
Строка -> чтобы упомянуть суффикс имени файла. т.е. расширение файла. Используйте null, чтобы использовать .tmp в качестве расширения.
attrs -> Это необязательно, чтобы упоминать список атрибутов файла, чтобы установить атомарно при создании файла
Например. Files.createTempFile(path,null, null); – создает временный файл с расширением .tmp по указанному пути
2. createTempFile(String, String, FileAttribute) – создает временный файл во временном каталоге по умолчанию системы / сервера.
Например: Files.createTempFile (null, null) – создает временный файл во временной папке по умолчанию в системе. В Windows временная папка может быть C: UsersusernameAppDataLocalTemp, где username – ваш идентификатор входа в Windows.
Источник: java-blog.ru