Java - Pembaca ke InputStream

Dalam tutorial singkat ini kita akan melihat konversi dari Reader ke InputStream - pertama dengan Java biasa, kemudian dengan Guava dan terakhir dengan pustaka Apache Commons IO.

Artikel ini adalah bagian dari seri “Java - Kembali ke Dasar” di Baeldung.

1. Dengan Java

Mari kita mulai dengan solusi Java:

@Test public void givenUsingPlainJava_whenConvertingReaderIntoInputStream_thenCorrect() throws IOException { Reader initialReader = new StringReader("With Java"); char[] charBuffer = new 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 = new ByteArrayInputStream( builder.toString().getBytes(StandardCharsets.UTF_8)); initialReader.close(); targetStream.close(); }

Perhatikan bahwa kita membaca (dan menulis) potongan data pada satu waktu.

2. Dengan Jambu Biji

Selanjutnya - mari kita lihat solusi Jambu Biji yang jauh lebih sederhana :

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

Perhatikan bahwa kami menggunakan aliran masukan di luar kotak yang mengubah seluruh konversi menjadi satu liner.

3. Dengan Commons IO

Terakhir - mari kita lihat solusi Commons IO - juga satu liner sederhana:

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

Perhatikan bahwa kami di sini berurusan dengan segala jenis Pembaca - tetapi jika Anda bekerja secara khusus dengan data teks, selalu merupakan ide yang baik untuk menentukan rangkaian karakter secara eksplisit daripada menggunakan default JVM.

Dan begitulah - 3 cara sederhana untuk mengubah Pembaca menjadi InputStream . Pastikan untuk memeriksa sampel di GitHub.