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.


$config[zx-auto] not found$config[zx-overlay] not found