Java - Добавить данные в файл
1. Вступление
В этом кратком руководстве мы увидим, как мы используем Java для добавления данных в содержимое файла несколькими простыми способами.
Начнем с того, как это сделать, используяFileWriter. ядра Java.
2. ИспользуяFileWriter
Вот простой тест - чтение существующего файла, добавление текста, а затем проверка правильности добавления:
@Test
public void whenAppendToFileUsingFileWriter_thenCorrect()
throws IOException {
FileWriter fw = new FileWriter(fileName, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("Spain");
bw.newLine();
bw.close();
assertThat(getStringFromInputStream(
new FileInputStream(fileName)))
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
}
Обратите внимание, что конструкторFileWriter’s принимает маркировкуboolean, если мы хотим добавить данные в существующий файл.
Если мы установим его наfalse,, то существующий контент будет заменен.
3. ИспользуяFileOutputStream
Далее - давайте посмотрим, как мы можем проделать ту же операцию - используяFileOutputStream:
@Test
public void whenAppendToFileUsingFileOutputStream_thenCorrect()
throws Exception {
FileOutputStream fos = new FileOutputStream(fileName, true);
fos.write("Spain\r\n".getBytes());
fos.close();
assertThat(StreamUtils.getStringFromInputStream(
new FileInputStream(fileName)))
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
}
Точно так же конструкторFileOutputStream принимает логическое значение, для которого должно быть установлено значение true, чтобы отметить, что мы хотим добавить данные в существующий файл.
4. Используяjava.nio.file
Далее - мы также можем добавлять контент в файлы, используя функциональность вjava.nio.file, которая была введена в JDK 7:
@Test
public void whenAppendToFileUsingFiles_thenCorrect()
throws IOException {
String contentToAppend = "Spain\r\n";
Files.write(
Paths.get(fileName),
contentToAppend.getBytes(),
StandardOpenOption.APPEND);
assertThat(StreamUtils.getStringFromInputStream(
new FileInputStream(fileName)))
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
}
5. Использование гуавы
Чтобы начать использовать Guava, нам нужно добавить его зависимость к нашемуpom.xml:
com.google.guava
guava
23.0
Теперь давайте посмотрим, как мы можем начать использовать Guava для добавления содержимого в существующий файл:
@Test
public void whenAppendToFileUsingFileWriter_thenCorrect()
throws IOException {
File file = new File(fileName);
CharSink chs = Files.asCharSink(
file, Charsets.UTF_8, FileWriteMode.APPEND);
chs.write("Spain\r\n");
assertThat(StreamUtils.getStringFromInputStream(
new FileInputStream(fileName)))
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
}
6. Использование Apache Commons IOFileUtils
Наконец, давайте посмотрим, как мы можем добавить контент в существующий файл с помощью Apache Commons IOFileUtils.
Во-первых, давайте добавим зависимость ввода-вывода Apache Commons к нашемуpom.xml:
commons-io
commons-io
2.6
Теперь давайте посмотрим на быстрый пример, демонстрирующий добавление содержимого к существующему файлу с помощьюFileUtils:
@Test
public void whenAppendToFileUsingFiles_thenCorrect()
throws IOException {
File file = new File(fileName);
FileUtils.writeStringToFile(
file, "Spain\r\n", StandardCharsets.UTF_8, true);
assertThat(StreamUtils.getStringFromInputStream(
new FileInputStream(fileName)))
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
}
7. Заключение
В этой статье мы увидели, как можно добавлять контент разными способами.
Полную реализацию этого руководства можно найти вover on GitHub.