I/O packageの要点まとめ。
色々種類がありすぎて、学部生が混乱してると思う。ちなみに俺も><
とりあえず簡単に「これはこのために使う」だけでも押さえておく。
I/O packageとは
Program に対する入出力(IO)を扱う機能をまとめたもの。
データの種類によって使うクラスが異なる。
Streamとは。
入出力のデータの流れのことをStreamという。
川の流れと考えるとわかりやすい。
Javaはファイルの種類によって異なるStreamを定義することによって
データのやり取りを可能にする。
Javaで読み込めるStreamの種類
Character Streamと Byte Stream。
Characterは16bit UTF-16文字。
たとえばHTMLファイル。
Byteは8bit。文字として認めないもの。
例えば、画像や音声ファイル。
InputStreamReader,OutputStreamWriter
CharacterとByte間の変換を行う変換ストリーム。
指定、あるいはローカルシステムのデフォルトエンコーディングを使う。
InputStreamReaderはbyte -> Character(UTF-16)
OutputStreamWriterはCharacter(UTF-16)->byte
BufferedReader,BufferedWriter
Bufferedストリ−ムはバッファリングを追加。
バッファリングがいまだによく分らないが、
つまり
read(),write()するとき、毎回いちいちファイルにアクセスする必要がなくなる。
ということらしい。
これらのクラスはFile Streamと一緒に使用されることが多い。
なぜならディスクファイルへのアクセスは、メモリバッファを使用するより非常に遅いから。
つまりバッファイリングとはディスクではなくメモリに記憶して読み込み速度を上げるってことか?
DataOutputStream, DataInputStream
ストリームを通して、特定の型(ex int,char,double and so on) を送りたい時に使う。
それぞれFilterOutputStream,FileterInputStreamを継承している。
Fileを扱うストリーム
- FileInputStream
- FileOutputStream
- FileReader
- FileWriter
File Streamは4種類。
普通はBufferedReader,BufferedWriterでバッファリングしてから使う。
Fileクラスはファイルに対して操作するクラス。実際にはパスを示している。
混同しないように。
RandomAccessFile
File ストリームよりも高度な実装が出来る。
その大きな特徴がファイルポインタ。ファイルポインタはインデックス(ファイルのどの位置かを指す)。
指定したファイルポインタから読み込んだり出力したりできる。
全然まとめになってないがこの辺で・・・
本参考にしながら書くとそっちに文章が全部持ってかれるし、自分で全然理解出来てない。
読む->まとめるの流れが自然なのに読みながらまとめようとしてるし。
めんどくさがり屋はダメだね。