Java アドバンス

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

ヒント: テキストを扱う場合は文字ストリームを、バイナリデータを扱う場合はバイトストリームを使用するのがベストプラクティスです。