Java で InputStream を文字列に変換する
-
入力ストリームを
InputStream
からString
に変換するためにStream
API を使用する -
入力ストリームを文字列に読み込んだり変換したりするには
ByteArrayOutputStream
を使用する -
Apache Commons の
IOUtils.toString
を使用して、入力ストリームを文字列に変換する
このチュートリアルでは、Java で InputStream を文字列に変換する方法について説明します。InputStream はバイトのストリームで、読み込みのようないくつかのタスクを実行するためにさらに使用することができます。一般的に、それはすべてのものをバイト単位で含むクラスです。このバイト・ストリームを他のタイプのデータに変換したい場合、特定のメソッドを使用しなければならない場合があります。
ここでは、Java で InputStream
を文字列に変換する方法をいくつか紹介します。
入力ストリームを InputStream
から String
に変換するために Stream
API を使用する
Java 8 の一部である Stream
API を用いて、InputStream
を文字列に変換することができます。InputStreamReader
は入力ストリームを読み込み、BufferedReader().lines()
はこの InputStream
を String
のストリームに変換するのを助ける。見ての通り、Collectors.joining()
はストリーム内のすべての文字列を結合して 1つの文字列を返すために使われています。
package com.company;
import java.io.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.commons.io.IOUtils;
public class Main {
public static void main(String[] args) {
try {
InputStream inputStream = new FileInputStream("java/sampleFile.txt");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
Stream<String> streamOfString = new BufferedReader(inputStreamReader).lines();
String streamToString = streamOfString.collect(Collectors.joining());
System.out.println(streamToString);
} catch (IOException e) {
e.printStackTrace();
}
}
}
出力:
This is a sample text file
入力ストリームを文字列に読み込んだり変換したりするには ByteArrayOutputStream
を使用する
InputStream
はバイトで構成されていることがわかっているので、readInputStream
をバイトの配列に変換する ByteArrayOutputStream
クラスを作成することができます。その後、toString()
を用いてこのバイト配列を文字列に変換することができます。
package com.company;
import java.io.*;
public class Main {
public static void main(String[] args) {
try {
InputStream readInputStream = new FileInputStream("java/sampleFile.txt");
String encoding = "UTF-8";
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] byteSize = new byte[1024];
int length;
while ((length = readInputStream.read(byteSize)) != -1) {
byteArrayOutputStream.write(byteSize, 0, length);
}
System.out.println(byteArrayOutputStream.toString(encoding));
} catch (IOException e) {
e.printStackTrace();
}
}
}
出力:
This is a sample text file
Apache Commons の IOUtils.toString
を使用して、入力ストリームを文字列に変換する
タスクを簡単にするために、Apache Commons ライブラリに含まれる IOUtils.toString
関数を使用することができます。Apache Commons ライブラリを使用するには、この依存関係をプロジェクトに含めることができます。
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
以下の例では、まずテキストファイルである InputStream
を作成し、InputStream
とストリームを変換するために使用するエンコーディングを指定して IOUtils.toString()
メソッドを呼び出します。ここでは、汎用的に使用されている UTF-8 エンコーディングを使用しています。
package com.company;
import java.io.*;
import org.apache.commons.io.IOUtils;
public class Main {
public static void main(String[] args) {
try {
InputStream inputStream = new FileInputStream("java/sampleFile.txt");
String steamToString = IOUtils.toString(inputStream, "UTF-8");
System.out.println(steamToString);
} catch (IOException e) {
e.printStackTrace();
}
}
}
出力:
This is a sample text file
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 で 16 進文字列のバイト配列を変換する方法
- Java で文字列から部分文字列を削除する方法
- Java で文字列から文字列配列への変換を実行する方法
- Java 文字列をバイトに変換する方法
- Java でランダムな文字列を生成する
- Java のスワップメソッド