Java - バイト配列へのリーダー

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つの簡単な方法がわかりました。