Java - Écrire un lecteur dans un fichier

Java - Écrire un lecteur dans un fichier

Dans ce rapide tutoriel, nous allons utiliserwrite the contents of a Reader to a File en Java, puis Guava et enfin la bibliothèque Apache Commons IO.

Cet article fait partie dethe “Java – Back to Basic” series ici par exemple.

1. Avec Java

Commençons parthe 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();
}

Premièrement, nous lisons le contenu du Reader dans une chaîne; alors nous écrivons simplement la chaîne dans un fichier.

2. Avec goyave

La solution de goyave est plus simple: nous avons maintenant l’API pour traiter l’écriture du lecteur dans un fichier:

@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. Avec Apache Commons IO

Et enfin, la solution Commons IO - utilisant également des API de niveau supérieur pour lire les données desReader et écrire ces données dans un fichier:

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

Et là, nous l'avons - 3 solutions simples pourwriting the contents of a Reader to File.