Java: сохранить / записать строку в файл

Введение Сохранение строки в файлы с помощью Java может быть выполнено несколькими способами. В этой статье мы покажем некоторые распространенные методы записи строки в файл. Вот список всех классов и методов, которые мы рассмотрим: * Files.writeString () * Files.write () * FileWriter * BufferedWriter * PrintWriter Files.writeString () Начиная с Java 11, класс Files содержит полезный служебный метод Files.writeString (). Есть два варианта этого метода. Самая простая форма требует Путь к файлу

Вступление

Сохранить строку в файлы можно несколькими способами с помощью Java. В этой статье мы покажем некоторые распространенные методы записи строки в файл.

Вот список всех классов и методов, которые мы рассмотрим:

Files.writeString ()

Начиная с Java 11, Files содержит полезный служебный метод Files.writeString() . Есть два варианта этого метода. Самая простая форма требует Path к файлу для записи и текстовое содержимое. Другой вариант также принимает необязательный CharSet :

 Path path = Paths.get("output.txt"); 
 String contents = "Hello"; 
 
 try { 
 Files.writeString(path, contents, StandardCharsets.UTF_8); 
 } catch (IOException ex) { 
 // Handle exception 
 } 

Здесь мало места для гибкости, но он отлично работает, если вам нужно быстро что-то записать в файл.

Files.write ()

String, как и другие объекты, можно преобразовать в byte[] . Метод Files.write() работает с байтами:

 Path path = Paths.get("output.txt"); 
 String someString = "Hello World"; 
 byte[] bytes = someString.getBytes(); 
 
 try { 
 Files.write(path, bytes); 
 } catch (IOException ex) { 
 // Handle exception 
 } 

Нет необходимости закрывать какие-либо ресурсы, так как мы сами не открывали никаких ресурсов.

FileWriter

FileWriter - один из самых простых способов записать текстовое содержимое в файл. Мы создадим File и передадим его в FileWriter чтобы «связать» их.

Затем мы просто используем FileWriter для записи в него:

 File output = new File("output.txt"); 
 FileWriter writer = new FileWriter(output); 
 
 writer.write("This text was written with a FileWriter"); 
 writer.flush(); 
 writer.close(); 

После использования писателя важно очистить и закрыть ресурсы. В качестве альтернативы вы можете сделать это с помощью синтаксиса try-with-resources

 try(FileWriter writer = new FileWriter("output.txt")) { 
 writer.write("This text was written with a FileWriter"); 
 } 
 catch(IOException e){ 
 // Handle the exception 
 } 

BufferedWriter

BufferedWriter - это объект-оболочка, который используется вокруг объектов типа Writer . Если у нас есть существующий Writer такой как FileWriter , мы можем обернуть его внутри BuffereWriter .

BufferedWriter лучше всего использовать, когда для файла write() В этом случае эти многократные записи временно сохраняются во внутренний буфер и записываются в файл только при наличии достаточного содержимого. Это позволяет избежать необходимости хранить каждый новый фрагмент текста в файле и вместо этого предоставляет соответствующий буфер для временного хранения.

Использование BufferedWriter намного эффективнее, чем FileWriter для множественной записи, но это не помогает с одной записью.

Фактически, использование BufferedWriter для одной записи приведет к ненужным накладным расходам. Для таких простых случаев FileWriter - лучший вариант.

Создадим BufferedWriter :

 BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt")); 

BufferedWriter и FileWriter расширяют Writer поэтому у них одинаковые методы:

 try(BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) { 
 writer.write("Written with BufferedWriter); 
 } 
 catch(IOException e){ 
 // Handle the exception 
 } 

PrintWriter

PrintWriter позволяет нам форматировать текст перед его записью. Он содержит методы, к которым мы привыкли, такие как printf() , println() и т. Д. Давайте создадим PrintWriter :

 File output = new File("output.txt"); 
 PrintWriter writer = new PrintWriter(output); 

Лучший способ работать с PrintWriter - использовать синтаксис try-with-resources

 try(PrintWriter writer = new PrintWriter(new FileWriter("output.txt"))) { 
 // Write using the PrintWriter instance 
 } catch { 
 // Handle Exception 
 } 

Когда у нас есть PrintWriter , давайте рассмотрим некоторые из предоставляемых им методов.

PrintWriter с append ()

PrintWriter , как и StringBuilder предоставляет метод append() который позволяет нам добавлять содержимое в конец существующего файла.

Давайте appent() некоторый текст в пустой writer :

 writer.append("Welcome to my fruit store! From me, you can buy:\n"); 
 writer.append("Apples"); 
 writer.append("\n"); 
 writer.append("Oranges"); 
 writer.append("\n"); 
 writer.append("Bananas"); 

Метод append() возвращает PrintWriter к которому он был вызван. Это позволяет append() и упорядочить их более аккуратно:

 writer.append("Welcome to my fruit store! From me, you can buy:\n"); 
 writer.append("Apples\n").append("Oranges\n").append("Bananas\n"); 

PrintWriter с print ()

PrintWriter содержит методы для форматированной печати. К ним относятся print() , printf() и println() :

 writer.print("Welcome to my fruit store %f", 2.0); 
 writer.printf("From me, you can buy %s and %s.", "apples", "oranges"); 

PrintWriter с записью ()

С помощью write() мы можем записывать в поток много различных типов текстового содержимого. Примеры включают массивы символов, строки и целые числа:

 char[] hello = {'H', 'e', 'l', 'l', 'o', '!', '\n'}; 
 
 writer.write(hello); 
 writer.write("Welcome to my fruit store\n"); 
 writer.write("From me, you can buy apples and oranges"); 

Метод write() принимает только контент без параметров форматирования, поэтому он похож на print() , но не может форматировать строки.

Чтобы завершить каждый PrintWriter в добавлении, печати или записи, важно очистить и закрыть поток:

 writer.flush(); 
 writer.close(); 

Метод flush() «сбрасывает» содержимое в файл, а close() навсегда закрывает поток.

Примечание. Если вы используете try-with-resources , он автоматически очистит и закроет поток.

Заключение

В этой статье мы показали несколько распространенных методов записи строк в файлы. Есть много вариантов, потому что есть много возможных вариантов использования.

Мы рассмотрели Files.writeString() , Files.write() , а также классы FileWriter , BufferedWriter и PrintWriter

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus