Java –リーダーをファイルに書き込む
このクイックチュートリアルでは、プレーンJava、Guava、最後にApache Commons IOライブラリを使用してwrite the contents of a Reader to a Fileに進みます。
この記事は、例としてここのthe “Java – Back to Basic” seriesの一部です。
1. Javaで
the simple Java solutionから始めましょう:
@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 CommonsIOを使用
そして最後に、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();
}
そして、それがあります - writing the contents of a Reader to Fileの3つの簡単なソリューション。