Автор оригинала: 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 .