このクイックチュートリアルでは、プレーンなJava、Guava、およびApache Commons IOライブラリを使用してReaderをbyte[]** に変換する方法を説明します。

この記事はリンクの一部です:/java-tutorial[The Java – Back to Basic]シリーズ。


1 Java

を使う

単純なJavaソリューションから始めましょう。中間のStringを使用します。

@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グアバ

とは

次に、グアバのソリューションを見てみましょう。中間のStringも使用します。

@Test
public void givenUsingGuava__whenConvertingReaderIntoByteArray__thenCorrect()
  throws IOException {
    Reader initialReader = CharSource.wrap("With Google Guava").openStream();

    byte[]targetArray = CharStreams.toString(initialReader).getBytes();

    initialReader.close();
}

単純なJavaの例を低レベルで変換する必要がないように、組み込みのユーティリティAPIを使用しています。


3コモンズIO

付き

そして最後に – Commons IOを使ってすぐにサポートされる直接的な解決策は次のとおりです。

@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つの簡単な方法。