Java I/O ストリーム
1. I/Oストリーム(インプット/アウトプット・ストリーム)
これまでの学習で、シンプルなテキストファイルの作成、読み取り、および書き込み方法を確認してきました。
Javaにおいて、Fileクラスを使用する場合と、I/Oストリーム(Input/Output Stream)を使用する場合とでは、重要な違いがあります。
java.ioパッケージに含まれるFileクラスは、ファイルやディレクトリに関する情報の取得に使用されます:
- ファイルは存在するか?
- ファイル名やサイズは?
- ファイルやフォルダの作成・削除
しかし、Fileクラスそのものは、ファイルの内容を読み書きすることはありません。
これまでは、テキストの書き込みにFileWriterを、読み取りにScannerを使用してきました。これらは使い勝手が良いですが、主にシンプルなテキストファイル向けに設計されています。
I/Oストリームは、テキストだけでなく、画像、オーディオ、PDFなどのバイナリデータも扱えるため、より柔軟な操作が可能です。
2. ストリームの種類
Javaのストリームは、扱うデータの種類によって大きく2つに分類されます。
2.1 バイトストリーム (Byte Streams)
生のバイナリデータ(画像、オーディオ、PDFファイルなど)を処理するために使用します。
- 例:
FileInputStream,FileOutputStream
2.2 文字ストリーム (Character Streams)
テキスト(文字や文字列)を処理するために使用します。これらのストリームは、文字エンコーディング(Character Encoding)を自動的に処理します。
- 例:
FileReader,FileWriter,BufferedReader,BufferedWriter
ヒント: テキストを扱う場合は文字ストリームを、バイナリデータを扱う場合はバイトストリームを使用するのがベストプラクティスです。