Java–リーダーからバイト配列
このクイックチュートリアルでは、プレーンJava、Guava、およびApacheCommonsIOライブラリを使用してリーダーをバイトに変換する方法[]を示します。
この記事は、ここBaeldungの「Java –BacktoBasic」シリーズの一部です。
1. Javaを使用
単純なJavaソリューションから始めましょう–中間の文字列を通過します:
@Test
public void givenUsingPlainJava_whenConvertingReaderIntoByteArray_thenCorrect()
throws IOException {
Reader initialReader = new StringReader("With Java");
char[] charArray = new char[8 * 1024];
StringBuilder builder = new StringBuilder();
int numCharsRead;
while ((numCharsRead = initialReader.read(charArray, 0, charArray.length)) != -1) {
builder.append(charArray, 0, numCharsRead);
}
byte[] targetArray = builder.toString().getBytes();
initialReader.close();
}
読み取りは、一度に1文字ではなく、チャンクで行われることに注意してください。
2. グアバと
次に、Guavaソリューションを見てみましょう。これも中間文字列を使用しています。
@Test
public void givenUsingGuava_whenConvertingReaderIntoByteArray_thenCorrect()
throws IOException {
Reader initialReader = CharSource.wrap("With Google Guava").openStream();
byte[] targetArray = CharStreams.toString(initialReader).getBytes();
initialReader.close();
}
組み込みのユーティリティAPIを使用して、プレーンなJavaの例の低レベルの変換を行う必要がないことに注意してください。
3. CommonsIOを使用
そして最後に、CommonsIOですぐにサポートされる直接的なソリューションを次に示します。
@Test
public void givenUsingCommonsIO_whenConvertingReaderIntoByteArray_thenCorrect()
throws IOException {
StringReader initialReader = new StringReader("With Commons IO");
byte[] targetArray = IOUtils.toByteArray(initialReader);
initialReader.close();
}
これで、Java Readerをバイト配列に変換する3つの簡単な方法がわかりました。 GitHubでサンプルを確認してください。