こんにちは!ISAMU(@burlesca_isa)です!
今回の対象読者は
- Javaのファイルの入出力について勉強したい方
この記事を読むと
ファイルの入出力について必要な知識
が分かります。
この記事は2回に分けて書きます。
- 第1回・・・ファイルの入出力を行うための必要な知識
- 第2回・・・サンプルプログラムみながらコードの勉強
です。
Javaのファイルの入出力について必要な知識
Javaのファイルの入出力について必要な知識は下記です。
- ファイル操作(Filesクラスやパスの指定)
- I/Oストリーム
- java.ioパッケージ
- バッファリング
- シリアライズ・デシリアライズ
ファイル操作については別の記事を参照してください。
[nlink url=”https://kajirinyo.com/java_course_35/”]I/Oストリーム
I/Oストリーム(アイ・オー・ストリーム)はInput(入力)とOutput(出力)の文字列やバイナリデータの流れのことです。
1バイトずつデータが流れていくことが名前の由来となっています。
ファイルの読み込みやネットワーク経由で取得した文字列をI/Oストリームで別の場所で入出力することができます。
I/Oストリームの種類
I/Oストリームは2種類に分けることができます。
- テキストストリーム・・・テキストの文字列が対象
- バイナリストリーム・・・動画や画像など、テキスト以外のデータが対象
です。
I/Oストリームの種類によってクラスを使い分けます。
java.ioパッケージとは
I/Oストリームで使用するクラスが格納されているパッケージです。
I/Oストリームの種類によって使用するインターフェースとクラスが分かれます。
インターフェースを記述します。
バイナリストリームのインターフェース
- 入力バイナリストリーム・・・InputtStream
- 出力バイナリストリーム・・・OutputStream
テキストストリームのインターフェース
- 入力テキストストリーム・・・Reader
- 出力テキストストリーム・・・Writer
バッファリングとは
バッファリングとは一定量のデータを先読みし、メモリに留めておく機能です。
記憶装置には大きくメモリとハードディスクがあります。
処理のスピードはメモリのほうが圧倒的に早いです。
バッファリングを使用しない場合、ファイルの読み込みはハードディスクに直接アクセスして
1文字ずつデータを読み込むことになります。
バッファリングを使用すれば、
処理スピードの早いメモリに一定量ファイルから先読みして保存しておくことで、
メモリからデータを読み込むことができます。
I/Oストリームを扱う場合、バッファリングを使用することが一般的です。
シリアライズ・デシリアライズ
シリアライズとはバイナリデータをバイト列で出力することです。
バイナリデータはパソコンが使用するデータ、バイト列にすることで
人間が扱えたり、データを永続的に保存することができます。
例えば、動画をシリアライズするフォーマットはmp4,静止画はJPEGなどです。
動画をシリアライズすることでmp4などのファイル形式となり、デスクトップなどで扱うことができます。
デシリアライズはその逆です。パソコンで扱うためにバイト列をバイナリデータにすること。
プログラミング初心者は扱うことが少ないですが、
フレームワークを使用しているときにシリアライズが必要になることがあるため、頭の片隅に覚えておくことが必要です。