Java で文字列を InputStream に変換する

Rupam Yadav 2023年10月12日
  1. Java で文字列を InputStream に変換するには ByteArrayInputStream() を用いる
  2. Java で StringReaderReaderInputStream を用いて文字列を InputStream に変換する
  3. 文字列を InputStream に変換するには org.apache.commons.io.IOUtils を使用する
Java で文字列を InputStream に変換する

Java で文字列を InputStream に変換する方法について、いくつかのメソッドを用いて説明します。文字列は文字の集合であり、InputStream はバイトの集合です。Java で文字列を InputStream に変換する方法を見てみましょう。

Java で文字列を InputStream に変換するには ByteArrayInputStream() を用いる

Java の Input/Output パッケージには、バイト配列を InputStream として読み込むクラス ByteArrayInputStream があります。まず、getBytes() を用いて exampleString から UTF_8 の文字セットを持つバイトを取得し、それを ByteArrayInputStream に渡します。

目的を達成できたかどうかを確認するために、read() を使って inputStream を読み込み、バイトごとに char に変換します。これは元の文字列を返します。

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;

public class Main {
  public static void main(String[] args) throws IOException {
    String exampleString = "This is a sample string";

    InputStream inputStream =
        new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8));

    // To check if we can read the string back from the inputstream
    int i;
    while ((i = inputStream.read()) != -1) {
      char getSingleChar = (char) i;
      System.out.print(getSingleChar);
    }
  }
}

出力:

This is a sample string

Java で StringReaderReaderInputStream を用いて文字列を InputStream に変換する

文字列を InputStream に変換する 2つ目の手法は、StringReaderReaderInputStream の 2つのメソッドを用います。前者は文字列を読み込んで reader にラップするために使われ、後者は readercharsets の 2つの引数を取ります。最後に、InputStream を取得します。

import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.input.ReaderInputStream;

public class Main {
  public static void main(String[] args) throws IOException {
    String exampleString = "This is a sample string";

    StringReader stringReader = new StringReader(exampleString);

    InputStream inputStream = new ReaderInputStream(stringReader, StandardCharsets.UTF_8);

    // To check if we can read the string back from the inputstream
    int i;
    while ((i = inputStream.read()) != -1) {
      char getSingleChar = (char) i;
      System.out.print(getSingleChar);
    }
  }
}

出力:

This is a sample string

文字列を InputStream に変換するには org.apache.commons.io.IOUtils を使用する

タスクを簡単にするために Apache Commons ライブラリを使用することもできます。この Apache Commons ライブラリの IOUtls クラスには、文字列と使用する文字セットを受け取る toInputStream() メソッドがあります。このメソッドは Java の文字列を InputStream に変換するために 1つのメソッドを呼び出すだけなので、最も簡単です。

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.IOUtils;

public class Main {
  public static void main(String[] args) throws IOException {
    String exampleString = "This is a sample string";

    InputStream is = IOUtils.toInputStream(exampleString, StandardCharsets.UTF_8);

    // To check if we can read the string back from the inputstream
    int i;
    while ((i = is.read()) != -1) {
      char getSingleChar = (char) i;
      System.out.print(getSingleChar);
    }
  }
}

出力:

This is a sample string
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java String

関連記事 - Java InputStream