工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java InputStreamReader解説:メソッド、エンコーディング、実践例

Java InputStreamReader解説

JavaのInputStreamReaderがバイトストリームを文字ストリームに橋渡しする仕組み、コアメソッド、エンコーディングの正しい扱い方を解説します。

java.ioのInputStreamReaderクラスは、生バイトを文字に変換し、テキストファイル、ネットワークストリーム、文字を表す任意のバイトベースソースの読み取りに不可欠です。

抽象Readerクラスを拡張し、バイトストリーム(例:FileInputStream)と文字ストリームの間の橋渡し役を果たします。

文字が複数バイトを必要とする場合(UTF-8やUTF-16エンコードテキストなど)、InputStreamReaderはそれらのバイトを一緒に読み取り正しい文字を生成します。


InputStreamReaderの作成

必要なクラスをインポート:

import java.io.InputStreamReader;

典型的なインスタンス化では、基盤バイトソースとしてFileInputStreamを使用:

FileInputStream file = new FileInputStream("example.txt");
InputStreamReader reader = new InputStreamReader(file);

ファイルのエンコーディングがわかっている場合は、誤解釈を避けるために指定:

InputStreamReader reader = new InputStreamReader(file, Charset.forName("UTF-8"));

Charsetを使用すると、リーダーが意図した文字セットでバイトを解釈することを保証します。


InputStreamReaderのコアメソッド

read()

例:テキストファイルを文字配列に読み取り

import java.io.*;

class Main {
    public static void main(String[] args) {
        char[] buffer = new char[100];
        try (FileInputStream file = new FileInputStream("input.txt");
             InputStreamReader reader = new InputStreamReader(file)) {
            reader.read(buffer);
            System.out.println("ストリーム内のデータ:\n" + new String(buffer));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

出力

ストリーム内のデータ:
This is a line of text inside the file.

getEncoding()

リーダーが使用するエンコーディングを取得:

InputStreamReader defaultReader = new InputStreamReader(file);
InputStreamReader utf8Reader = new InputStreamReader(file, Charset.forName("UTF-8"));
System.out.println("デフォルトエンコーディング: " + defaultReader.getEncoding());
System.out.println("UTF-8エンコーディング: " + utf8Reader.getEncoding());

出力

デフォルトエンコーディング: Cp1252
UTF-8エンコーディング: UTF-8

エンコーディング未指定時、getEncoding()はプラットフォームのデフォルトcharsetを返します。

注意: 明示的なエンコーディングにはCharset.forName()を使用。詳細はJava Charsetドキュメントを参照。


close()

使用後は常にリーダーを閉じます。上記のtry-with-resources構文が自動的に処理しますが、reader.close()を明示的に呼ぶことも可能です。


その他の便利なメソッド

メソッド説明
ready()ストリームが読み取り準備完了かチェック
mark(int readAheadLimit)現在位置をマークして後でリセット可能に
reset()最後にマークした位置に戻る

包括的なリファレンスは公式InputStreamReaderページを参照。

Java

  1. Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
  2. Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
  3. Java継承のマスター:概念、種類、実践例
  4. Java Staticネストクラスの理解:用法、違い、実例
  5. Java無名インナークラス完全ガイド:定義、構文、実践例
  6. Javaシングルトンパターン完全解説:安全な実装と活用法
  7. Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
  8. Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例
  9. Java Scanner完全ガイド:実践例で学ぶ入力処理
  10. Javaジェネリクス完全ガイド:再利用可能で型安全なコードの構築
  11. Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除