Java InputStreamReader クラス
Java InputStreamReader クラス
このチュートリアルでは、例を使用して Java InputStreamReader とそのメソッドについて学習します。
InputStreamReader
java.io
のクラス パッケージを使用して、バイト単位のデータを文字単位のデータに変換できます。
抽象クラス Reader
を拡張します .
InputStreamReader
クラスは他の入力ストリームで動作します。これは、バイト ストリームと文字ストリーム間のブリッジとしても知られています。これは InputStreamReader
入力ストリームからバイトを文字として読み取ります。
たとえば、一部の文字は、ストレージに格納するために 2 バイトが必要でした。このようなデータを読み取るには、2 バイトを一緒に読み取り、対応する文字に変換する入力ストリーム リーダーを使用できます。
InputStreamReader を作成する
InputStreamReader
を作成するには 、 java.io.InputStreamReader
をインポートする必要があります 最初にパッケージ。ここでパッケージをインポートしたら、入力ストリーム リーダーを作成する方法を説明します。
// Creates an InputStream
FileInputStream file = new FileInputStream(String path);
// Creates an InputStreamReader
InputStreamReader input = new InputStreamReader(file);
上記の例では、InputStreamReader
を作成しました。 名前付き input FileInputStream
とともに 名前付き ファイル .
ここで、ファイル内のデータは、デフォルトの文字エンコーディングを使用して保存されます。
ただし、文字エンコーディングのタイプ (UTF8) を指定できます。 または UTF16 ) ファイルにも含まれています。
// Creates an InputStreamReader specifying the character encoding
InputStreamReader input = new InputStreamReader(file, Charset cs);
ここでは、Charset
を使用しました クラスでファイルの文字エンコーディングを指定します。
InputStreamReader のメソッド
InputStreamReader
クラスは、Reader
に存在するさまざまなメソッドの実装を提供します クラス。
read() メソッド
read()
- リーダーから 1 文字を読み取りますread(char[] array)
- リーダーから文字を読み取り、指定された配列に格納しますread(char[] array, int start, int length)
- length に等しい文字数を読み取ります リーダーから取得し、start から始まる指定された配列に格納します
たとえば、input.txt という名前のファイルがあるとします。
This is a line of text inside the file.
InputStreamReader
を使用してこのファイルを読み取ってみましょう .
import java.io.InputStreamReader;
import java.io.FileInputStream;
class Main {
public static void main(String[] args) {
// Creates an array of character
char[] array = new char[100];
try {
// Creates a FileInputStream
FileInputStream file = new FileInputStream("input.txt");
// Creates an InputStreamReader
InputStreamReader input = new InputStreamReader(file);
// Reads characters from the file
input.read(array);
System.out.println("Data in the stream:");
System.out.println(array);
// Closes the reader
input.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
出力
Data in the stream: This is a line of text inside the file.
上記の例では、ファイル入力ストリームを使用して入力ストリーム リーダーを作成しました。入力ストリーム リーダーはファイル input.txt にリンクされています .
FileInputStream file = new FileInputStream("input.txt");
InputStreamReader input = new InputStreamReader(file);
ファイルから文字を読み取るために、 read()
を使用しました メソッド。
getEncoding() メソッド
getEncoding()
メソッドを使用して、入力ストリームにデータを格納するために使用されるエンコーディングのタイプを取得できます。たとえば、
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.io.FileInputStream;
class Main {
public static void main(String[] args) {
try {
// Creates a FileInputStream
FileInputStream file = new FileInputStream("input.txt");
// Creates an InputStreamReader with default encoding
InputStreamReader input1 = new InputStreamReader(file);
// Creates an InputStreamReader specifying the encoding
InputStreamReader input2 = new InputStreamReader(file, Charset.forName("UTF8"));
// Returns the character encoding of the input stream
System.out.println("Character encoding of input1: " + input1.getEncoding());
System.out.println("Character encoding of input2: " + input2.getEncoding());
// Closes the reader
input1.close();
input2.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
出力
The character encoding of input1: Cp1252 The character encoding of input2: UTF8
上記の例では、input1 という名前の 2 つの入力ストリーム リーダーを作成しました。 と input2 .
- input1 文字エンコーディングを指定しません。したがって、
getEncoding()
メソッドは、デフォルトの文字エンコーディングの正規名を返します。 - input2 文字エンコード UTF8 を指定します .したがって、
getEncoding()
メソッドは、指定された文字エンコーディングを返します。
注意 :Charset.forName()
を使用しました 文字エンコーディングの種類を指定するメソッド。詳細については、Java Charset (公式の Java ドキュメント) を参照してください。
close() メソッド
入力ストリーム リーダーを閉じるには、close()
を使用できます。 方法。一度 close()
メソッドが呼び出されると、リーダーを使用してデータを読み取ることはできません。
InputStreamReader のその他のメソッド
メソッド | 説明 |
---|---|
ready() | ストリームを読み取る準備ができているかどうかを確認します |
mark() | データが読み取られたストリーム内の位置をマークします |
reset() | マークが設定されたストリーム内のポイントにコントロールを返します |
詳細については、Java InputStreamReader (公式の Java ドキュメント) にアクセスしてください。
Java