JavaでInputStreamReaderを使う方法を教えてください。
InputStreamReaderはJavaにおける、バイトストリームを読み込んで文字ストリームに変換するクラスです。バイトストリームを文字ストリームに変換することができ、また文字エンコーディングも指定可能です。
InputStreamReaderを使用する手順は以下の通りです。
- FileInputStreamやSocket.getInputStream()などと、InputStreamオブジェクトを作成します。
- InputStreamオブジェクトを引数として渡して、InputStreamReaderオブジェクトを作成します。文字エンコーディングは任意で指定できますが、指定しない場合はプラットフォームの既定の文字エンコーディングが使用されます。
- InputStreamReaderのreadメソッドを使用して文字データを読み込む。readメソッドはUnicode値で読み込んだ文字を整数で返し、ストリームの末尾の場合-1を返す。
- InputStreamReaderのclose()メソッドでストリームを閉じる
InputStreamReaderを利用して文字データを読み込む例を簡単なサンプルコードで以下に示す。
import java.io.*;
public class InputStreamReaderExample {
public static void main(String[] args) {
try {
// 创建一个InputStream对象
FileInputStream fis = new FileInputStream("input.txt");
// 创建一个InputStreamReader对象,并将InputStream对象作为参数传递给它
InputStreamReader isr = new InputStreamReader(fis);
// 读取字符数据
int data;
while ((data = isr.read()) != -1) {
// 处理读取的字符数据
System.out.print((char) data);
}
// 关闭流
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上記のサンプルでは、まずFileInputStreamを作成し、その後InputStreamReaderのコンストラクタにFileInputStreamを渡してInputStreamReaderを作成します。次に、InputStreamReaderのread()メソッドを使って文字データを読み込み、System.out.print()メソッドで読み込んだ文字データをプリントします。最後に、InputStreamReaderのclose()メソッドを呼び出してストリームを閉じます。
InputStreamReaderでバイト列を読み込む際は、バイトを文字に変換します。そのため、バイト列が文字データでない場合や、適切な文字エンコーディングが使用されていない場合は、誤った文字データが読み込まれる可能性があります。従って、InputStreamReaderを使用する際には、適切な文字エンコーディングが使用されていることを確認する必要があります。