Java - Leser til InputStream
I denne raske opplæringen skal vi se på konverteringen fra en Leser til en InputStream - først med vanlig Java, deretter med Guava og til slutt med Apache Commons IO-biblioteket.
Denne artikkelen er en del av "Java - Back to Basic" -serien her på Baeldung.
1. Med Java
La oss starte med Java-løsningen:
@Test offentlig ugyldighet givenUsingPlainJava_whenConvertingReaderIntoInputStream_thenCorrect () kaster IOException {Reader initialReader = new StringReader ("With Java"); char [] charBuffer = ny char [8 * 1024]; StringBuilder builder = new StringBuilder (); int numCharsRead; while ((numCharsRead = initialReader.read (charBuffer, 0, charBuffer.length))! = -1) {builder.append (charBuffer, 0, numCharsRead); } InputStream targetStream = ny ByteArrayInputStream (builder.toString (). GetBytes (StandardCharsets.UTF_8)); initialReader.close (); targetStream.close (); }
Legg merke til at vi leser (og skriver) biter av data om gangen.
2. Med Guava
Neste - la oss se på mye enklere Guava-løsning:
@Test offentlig ugyldighet givenUsingGuava_whenConvertingReaderIntoInputStream_thenCorrect () kaster IOException {Reader initialReader = new StringReader ("With Guava"); InputStream targetStream = ny ByteArrayInputStream (CharStreams.toString (initialReader) .getBytes (Charsets.UTF_8)); initialReader.close (); targetStream.close (); }
Legg merke til at vi bruker en out of the box input stream som gjør hele konverteringen til en one liner.
3. Med Commons IO
Til slutt - la oss se på Commons IO-løsningen - også en enkel liner:
@Test offentlig ugyldighet givenUsingCommonsIO_whenConvertingReaderIntoInputStream () kaster IOException {Reader initialReader = new StringReader ("With Commons IO"); InputStream targetStream = IOUtils.toInputStream (IOUtils.toString (initialReader), Charsets.UTF_8); initialReader.close (); targetStream.close (); }
Merk at vi her har å gjøre med alle slags lesere - men hvis du jobber spesifikt med tekstdata, er det alltid lurt å spesifisere tegnsettet eksplisitt i stedet for å bruke JVM-standard.
Og der har du det - 3 enkle måter å transformere Leser inn i en InputStream. Sørg for å sjekke ut prøven på GitHub.