社会人のメモ帳

忘れたくないことアレコレ

【第5週】第5章:入出力を理解する【Java Gold合格へ向けて】

PREV | LIST | NEXT

Java Gold合格へ向けて

黒本の第4章は『入出力』、これをさらに細分化すると下記の6つに分かれる(黒本より抜粋)。

  1. 入出力ストリーム
  2. java.ioパッケージのクラス
  3. NIO.2
  4. java.nio.file.Pathインタフェース
  5. java.nio.file.Filesクラス
  6. シリアライズ

入出力ストリームというのは、外部とのデータのやり取り(ファイルへのデータの読み込み/書き込みなど)を行うために用意されたJavaのパッケージのことを指します。そのため、第四章で学んだストリームAPIとは別物ということに注意しなければいけません。

入出力ストリームは、入力と出力でそれぞれ入力ストリーム出力ストリームに分類されます。入力がデータの読み込み、出力がデータの書き込みという向きになっています。 またやり取りするデータのサイズで、それぞれキャラクタストリームバイトストリームに分類されます。その名が示す通り、キャラクタストリームはchar単位、バイトストリームはbyte単位となっています。利用できる用意された実装クラスとしては下記の表にまとめた通り。それぞれの使い方については別記事でまとめていきたい。

クラス名 説明 キャラクタストリーム or バイトストリーム 入力ストリーム or 出力ストリーム
FileInputStream ファイルからbyte単位の読み込みを行うストリーム バイト
ストリーム
入力
ストリーム
FileOutputStream ファイルからbyte単位の書き出しを行うストリーム バイト
ストリーム
出力
ストリーム
DataInputStream 基本データ型のデータを読み込めるストリーム バイト
ストリーム
入力
ストリーム
DataOutputStream 基本データ型のデータを書き出せるストリーム バイト
ストリーム
出力
ストリーム
FileReader ファイルからchar単位の読み込みを行うストリーム キャラク
ストリーム
入力
ストリーム
FileWriter ファイルからchar単位の書き出しを行うストリーム キャラク
ストリーム
出力
ストリーム
BufferedReader char単位でバッファリングしながら読み込むストリーム キャラク
ストリーム
入力
ストリーム
BufferedWriter char単位でバッファリングしながら書き出すストリーム キャラク
ストリーム
出力
ストリーム

シリアライズというワードは(個人的にJava Goldで初見だった)、Javaで独自に定義したオブジェクトを出力ストリームに書き出すことを指す。シリアライズされたオブジェクトを読み込んで復元することをデリシアライズという。ただシリアライズできるようにするには、java.io.Serializableインタフェースを実装する必要があるようだ。この辺りも実際に動かして確認したい。

今後の記事で確認したいこととしては下記の三点。

  • ファイルからの入出力(バイトストリームとキャラクタストリーム)
  • 基本データ型の入出力(バイトストリームとキャラクタストリーム)
  • シリアライズ