このクイックチュートリアルでは、

Reader

の内容を通常のJava、次にGuava、そして最後にApache Commons IOライブラリを使用して** Fileに書き込みます。

この記事はリンクの一部です:/java-tutorial[The Java – Back to Basic]シリーズ。


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();
}

まず、Readerのコンテンツを文字列に読み込んでいます。それから、文字列をファイルに書き込むだけです。


2グアバ

とは

グアバの解決法はより簡単です – 読者をファイルにすることに対処するための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();
}

そしてそこに我々はそれを持っています – Readerの内容をFileに書き込むための3つの簡単な解決策。