Java InputStreamクラス:コアメソッドとFileInputStream実践例
Java InputStreamクラス
JavaのInputStreamクラスを解説し、主要メソッド、主要サブクラス、FileInputStreamを使用した実践例を紹介します。
java.ioパッケージのInputStreamは、バイト指向入力ストリームを表す抽象スーパークラスです。直接インスタンス化できませんが、その具象サブクラスがファイル、バイト配列、その他のソースからデータを読み取る強力なメカニズムを提供します。
InputStreamの主要サブクラス
InputStreamの実用的な利用はサブクラスに依存します。最も一般的なもの:
FileInputStream– ディスク上のファイルからバイトを読み取るByteArrayInputStream– メモリ内のバイト配列からバイトを読み取るObjectInputStream– 入力ストリームからオブジェクトを逆シリアル化
各サブクラスは専用チュートリアルで解説しますが、ここではFileInputStreamに焦点を当てます。
InputStreamの作成
InputStreamを作成するには、まずクラスをインポート:
import java.io.InputStream;
InputStreamは抽象クラスなので、サブクラスをインスタンス化します:
InputStream stream = new FileInputStream("example.txt");
FileInputStreamは他の具象サブクラスに置き換え可能です。
InputStreamのコアメソッド
すべてのInputStream実装で共通のメソッド:
int read()– 1バイト読み取り、intとして返す。ストリーム末尾なら-1int read(byte[] b)– 提供されたバイト配列にデータを格納し、読み取ったバイト数を返すint available()– ブロックせずに読み取れるバイト数を報告void mark(int readlimit)– ストリームの現在位置をマークvoid reset()– ストリームを最新のマーク位置に戻すboolean markSupported()–markとresetがサポートされているか表示long skip(long n)–nバイトをスキップして破棄void close()– ストリームを閉じ、システムリソースを解放
実践例:FileInputStreamでファイル読み取り
input.txtに以下の内容があると仮定:
This is a line of text inside the file.
ファイルを開き、利用可能バイト数を報告し、バイト配列に読み取り、結果を出力する完全なプログラム:
import java.io.FileInputStream;
import java.io.InputStream;
public class Main {
public static void main(String[] args) {
byte[] buffer = new byte[100];
try (InputStream input = new FileInputStream("input.txt")) {
System.out.println("利用可能バイト数: " + input.available());
int bytesRead = input.read(buffer);
System.out.println("読み取ったバイト数: " + bytesRead);
String data = new String(buffer, 0, bytesRead);
System.out.println("ファイルから読み取ったデータ:");
System.out.println(data);
} catch (Exception e) {
e.printStackTrace();
}
}
}
出力
利用可能バイト数: 39
読み取ったバイト数: 39
ファイルから読み取ったデータ:
This is a line of text inside the file.
この例は、try-with-resourcesブロックでFileInputStreamを扱い、例外発生時でも自動的にストリームが閉じられることを示しています。
APIの詳細については公式Javaドキュメントを参照:InputStream Javadoc
Java
- Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
- Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
- Java継承のマスター:概念、種類、実践例
- Java Staticネストクラスの理解:用法、違い、実例
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaシングルトンパターン完全解説:安全な実装と活用法
- Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
- Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例
- Java Scanner完全ガイド:実践例で学ぶ入力処理
- Javaジェネリクス完全ガイド:再利用可能で型安全なコードの構築
- Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除