Рубрики
Без рубрики

Java – Запись считывателя в файл

Как записать содержимое считывателя в файл с помощью обычного Java, Guava или Apache Commons IO.

Автор оригинала: Eugen Paraschiv.

В этом кратком руководстве мы собираемся записать содержимое Reader в файл , используя обычную Java, затем Guava и, наконец, библиотеку ввода-вывода Apache Commons.

Эта статья является частью серии “Java – Back to Basic” здесь, на Baeldung.

1. С Java

Давайте начнем с простого решения Java :

@Test
public void givenUsingPlainJava_whenWritingReaderContentsToFile_thenCorrect() 
  throws IOException {
    Reader initialReader = new StringReader("Some text");

    int intValueOfChar;
    StringBuilder buffer = new StringBuilder();
    while ((intValueOfChar = initialReader.read()) != -1) {
        buffer.append((char) intValueOfChar);
    }
    initialReader.close();

    File targetFile = new File("src/test/resources/targetFile.txt");
    targetFile.createNewFile();

    Writer targetFileWriter = new FileWriter(targetFile);
    targetFileWriter.write(buffer.toString());
    targetFileWriter.close();
}

Во – первых, мы читаем содержимое Считывателя в строку; затем мы просто записываем строку в файл.

2. С Гуавой

Решение Guava проще – теперь у нас есть API для записи считывателя в файл:

@Test
public void givenUsingGuava_whenWritingReaderContentsToFile_thenCorrect() 
  throws IOException {
    Reader initialReader = new StringReader("Some text");

    File targetFile = new File("src/test/resources/targetFile.txt");
    com.google.common.io.Files.touch(targetFile);
    CharSink charSink = com.google.common.io.Files.
      asCharSink(targetFile, Charset.defaultCharset(), FileWriteMode.APPEND);
    charSink.writeFrom(initialReader);

    initialReader.close();
}

3. С Apache Commons IO

И, наконец, решение Commons IO – также использует API более высокого уровня для чтения данных из Reader и записи этих данных в файл:

@Test
public void givenUsingCommonsIO_whenWritingReaderContentsToFile_thenCorrect() 
  throws IOException {
    Reader initialReader = new CharSequenceReader("CharSequenceReader extends Reader");

    File targetFile = new File("src/test/resources/targetFile.txt");
    FileUtils.touch(targetFile);
    byte[] buffer = IOUtils.toByteArray(initialReader);
    FileUtils.writeByteArrayToFile(targetFile, buffer);

    initialReader.close();
}

И вот у нас есть это – 3 простых решения для записи содержимого считывателя в файл . Обязательно ознакомьтесь с образцом на GitHub .