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.