Автор оригинала: mkyong.
В этой статье показано, как использовать следующие API Java для добавления текста в конец файла.
Файлы.запись
– Добавьте одну строку в файл, Java 7.– Добавьте одну строку в файл, Java 7.
– Добавьте несколько строк в файл, Java 7, Java 8.Файлы.Запись
– Ява 11.Файлообменник
Поток вывода файла
Файлы/| – Apache Commons IO.
В Java для API-интерфейсов NIO, таких как Files.write
, мы можем использовать StandardOpenOption. ДОБАВЬТЕ , чтобы включить режим добавления. Для примеров:
// append a string to the end of the file private static void appendToFile(Path path, String content) throws IOException { Files.write(path, content.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE, StandardOpenOption.APPEND); }
Для классических API ввода-вывода, таких как файловый редактор
или |/Поток вывода файла , мы можем передать
true во второй аргумент конструктора, чтобы включить режим добавления. Для примеров:
// append to the file try (FileWriter fw = new FileWriter(file, true); BufferedWriter bw = new BufferedWriter(fw)) { bw.write(content); bw.newLine(); } // append to the file try (FileOutputStream fos = new FileOutputStream(file, true)) { fos.write(content.getBytes(StandardCharsets.UTF_8)); }
1. Добавьте одну строку в файл – Files.write
Если файл не существует, API выдает исключение NoSuchFileException
Files.write(path, content.getBytes(StandardCharsets.UTF_8), StandardOpenOption.APPEND);
Лучшее решение всегда сочетает в себе стандартную опцию. СОЗДАТЬ
и Стандартная опция. ДОБАВЛЯТЬ
. Если файл не существует, API создаст и запишет текст в файл; если файл существует, добавьте текст в конец файла.
Files.write(path, content.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE, StandardOpenOption.APPEND);
1.1 В приведенном ниже примере показано, как добавить одну строку в конец файла.
package com.mkyong.io.file; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class FileAppend1 { private static final String NEW_LINE = System.lineSeparator(); public static void main(String[] args) throws IOException { Path path = Paths.get("/home/mkyong/test/abc.txt"); appendToFile(path, "hello world" + NEW_LINE); } // Java 7 private static void appendToFile(Path path, String content) throws IOException { // if file not exists throws java.nio.file.NoSuchFileException /* Files.write(path, content.getBytes(StandardCharsets.UTF_8), StandardOpenOption.APPEND);*/ // if file not exists, create and write to it // otherwise append to the end of the file Files.write(path, content.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE, StandardOpenOption.APPEND); } }
Выход
Запустите 1-й раз.
hello world
Бегите 2-й раз.
hello world hello world
2. Добавление нескольких строк в файл – Добавление нескольких строк в файл –
Files.write
также поддерживает Повторяющийся
интерфейс для нескольких строк, мы можем добавить Список
в файл.
// append lines of text private static void appendToFileJava8(Path path, Listlist) throws IOException { // Java 7? /*Files.write(path, list, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.APPEND);*/ // Java 8, default utf_8 Files.write(path, list, StandardOpenOption.CREATE, StandardOpenOption.APPEND); }
3. Java 11 – Файлы.запись в режиме добавления.
В Java 7 нам нужно преобразовать Строку
в байт[]
и записать или добавить его в файл.
String content = "..."; Files.write(path, content.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE, StandardOpenOption.APPEND);
В Java 11 мы можем использовать новый Files.WriteString
API для записи или добавления строки непосредственно в файл. Режим добавления работает таким же образом.
// Java 11, writeString, append mode private static void appendToFileJava11(Path path, String content) throws IOException { // utf_8 /*Files.writeString(path, content, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.APPEND);*/ // default StandardCharsets.UTF_8 Files.writeString(path, content, StandardOpenOption.CREATE, StandardOpenOption.APPEND); }
4. Файлообменник
Для устаревших API ввода-вывода, таких как FileWriter
, второй аргумент конструктора указывает режим добавления.
// append // if file not exists, create and write // if the file exists, append to the end of the file try (FileWriter fw = new FileWriter(file, true); BufferedWriter bw = new BufferedWriter(fw)) { bw.write(content); bw.newLine(); // add new line, System.lineSeparator() }
4.1 В приведенном ниже примере показано, как использовать файловый редактор
для добавления одной строки в конец файла.
package com.mkyong.io.file; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class FileAppend4 { public static void main(String[] args) throws IOException { File file = new File("/home/mkyong/test/abc.txt"); appendToFileFileWriter(file, "hello world"); System.out.println("Done"); } private static void appendToFileFileWriter(File file, String content) throws IOException { // default - create and write // if file not exists, create and write // if file exists, truncate and write /*try (FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw)) { bw.write(content); bw.newLine(); }*/ // append mode // if file not exists, create and write // if file exists, append to the end of the file try (FileWriter fw = new FileWriter(file, true); BufferedWriter bw = new BufferedWriter(fw)) { bw.write(content); bw.newLine(); // add new line, System.lineSeparator() } } }
4.2 Приведенный ниже пример добавляет Список
или несколько строк в конец файла.
private static void appendToFileFileWriter( File file, Listcontent) throws IOException { try (FileWriter fw = new FileWriter(file, true); BufferedWriter bw = new BufferedWriter(fw)) { for (String s : content) { bw.write(s); bw.newLine(); } } }
5. Поток вывода файла
Режим добавления FileOutputStream
работает так же, как и Файловая программа
.
private static void appendToFileFileOutputStream(File file, String content) throws IOException { // append mode try (FileOutputStream fos = new FileOutputStream(file, true)) { fos.write(content.getBytes(StandardCharsets.UTF_8)); } }
6. Файлы
В приведенном ниже примере используется популярный Apache commons-io Файлы.writeStringToFile
для добавления строки в конец файла.
commons-io commons-io 2.7
import org.apache.commons.io.FileUtils; private static void appendToFileFileUtils(File file, String content) throws IOException { // append mode FileUtils.writeStringToFile( file, content, StandardCharsets.UTF_8, true); }
Просмотрите файлы .writeStringToFile
подпись; последний или четвертый аргумент указывает режим добавления.
public static void writeStringToFile(final File file, final String data, final Charset charset,final boolean append) throws IOException { try (OutputStream out = openOutputStream(file, append)) { IOUtils.write(data, out, charset); } }
7. В старые добрые времена.
До Java 7 мы могли использовать файловый редактор
для добавления текста в файл и закрытия ресурсов вручную.
package com.mkyong; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class ClassicBufferedWriterExample { public static void main(String[] args) { BufferedWriter bw = null; FileWriter fw = null; try { String content = "Hello"; fw = new FileWriter("app.log", true); bw = new BufferedWriter(fw); bw.write(content); } catch (IOException e) { System.err.format("IOException: %s%n", e); } finally { try { if (bw != null) bw.close(); if (fw != null) fw.close(); } catch (IOException ex) { System.err.format("IOException: %s%n", ex); } } } }
P.S. Приведенный выше код предназначен только для развлечения и устаревших целей, всегда придерживается метода “попробуй с ресурсами”, чтобы закрыть ресурсы.
Рекомендации
- Рекомендации Документы Java
- JavaDocs для написания файлов
- Файловыходной поток JavaDoc
- JAVADOCS стандартной версии
- Apache Commons IO
- Java – Как создать и записать в файл
Оригинал: “https://mkyong.com/java/how-to-append-content-to-file-in-java/”