Java –InputStreamへのリーダー

このクイックチュートリアルではReaderからInputStreamへの変換について説明します。最初はプレーンJavaを使用し、次にGuavaを使用し、最後にApache CommonsIOライブラリを使用します。

この記事は、ここBaeldungの「Java– BacktoBasic」シリーズの一部です。

1.Javaを使用

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(); }

一度にデータのチャンクを読み取っている(そして書き込んでいる)ことに注意してください。

2.グアバと

次へ–はるかに単純なGuavaソリューションを見てみましょう:

@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(); }

変換全体を1つのライナーに変換する、すぐに使用できる入力ストリームを使用していることに注意してください。

3. CommonsIOを使用

最後に、Commons IOソリューションを見てみましょう。これも単純なワンライナーです。

@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(); }

ここではあらゆる種類のリーダーを扱っていることに注意してください。ただし、特にテキストデータを扱っている場合は、JVMのデフォルトを使用するのではなく、文字セットを明示的に指定することをお勧めします。

そして、これで完了です–リーダーInputStreamに変換する3つの簡単な方法。GitHubでサンプルを確認してください。