Java –バイト配列のリーダー
このクイックチュートリアルでは、プレーンJava、Guava、およびApache Commons IOライブラリを使用してconvert a Reader into a byte[]する方法を示します。
この記事は、例としてここのthe “Java – Back to Basic” seriesの一部です。
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. コモンズIO
そして最後に、CommonsIOですぐにサポートされる直接的なソリューションは次のとおりです。
@Test
public void givenUsingCommonsIO_whenConvertingReaderIntoByteArray_thenCorrect()
throws IOException {
StringReader initialReader = new StringReader("With Commons IO");
byte[] targetArray = IOUtils.toByteArray(initialReader);
initialReader.close();
}
これで、JavaReaderをバイト配列に変換する3つの簡単な方法がわかりました。