Java - čítačka pre InputStream

V tomto rýchlom výučbe sa pozrieme na premena z a Čitateľ do an InputStream - najskôr s obyčajnou Javou, potom s Guava a nakoniec s knižnicou Apache Commons IO.

Tento článok je súčasťou série „Java - Späť na základné“ tu na Baeldungu.

1. S programom Java

Začnime s riešením Java:

@Test public void givenUsingPlainJava_whenConvertingReaderIntoInputStream_thenCorrect () vyvolá IOException {Reader initialReader = nový StringReader ("With Java"); char [] charBuffer = nový char [8 * 1024]; Staviteľ StringBuilder = nový StringBuilder (); int numCharsRead; while ((numCharsRead = initialReader.read (charBuffer, 0, charBuffer.length))! = -1) {builder.append (charBuffer, 0, numCharsRead); } InputStream targetStream = nový ByteArrayInputStream (builder.toString (). GetBytes (StandardCharsets.UTF_8)); initialReader.close (); targetStream.close (); }

Všimnite si, že čítame (a píšeme) kúsky údajov naraz.

2. S Guavou

Ďalej - pozrime sa na oveľa jednoduchšie riešenie Guava:

@Test public void givenUsingGuava_whenConvertingReaderIntoInputStream_thenCorrect () vyvolá IOException {Reader initialReader = nový StringReader ("With Guava"); InputStream targetStream = nový ByteArrayInputStream (CharStreams.toString (initialReader) .getBytes (Charsets.UTF_8)); initialReader.close (); targetStream.close (); }

Všimnite si, že používame vstupný prúd po vybalení z krabice, ktorý premení celú konverziu na jednu vložku.

3. S Commons IO

Na záver - pozrime sa riešenie Commons IO - tiež jednoduchá vložka:

@Test public void givenUsingCommonsIO_whenConvertingReaderIntoInputStream () vyvolá IOException {Reader initialReader = nový StringReader ("With Commons IO"); InputStream targetStream = IOUtils.toInputStream (IOUtils.toString (initialReader), Charsets.UTF_8); initialReader.close (); targetStream.close (); }

Upozorňujeme, že tu pracujeme s akýmkoľvek typom aplikácie Reader - ale ak pracujete špeciálne s textovými údajmi, je vždy dobré explicitne špecifikovať znakovú sadu, a nie použiť predvolené nastavenie JVM.

A máte to - 3 jednoduché spôsoby, ako transformovať Čitateľ do InputStream. Uistite sa, že ste si vzorku prezreli na GitHub.


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