自分用のまとめ
間違いあればご指摘いただけると嬉しいです!
Stream
データを"バイト単位で" read, writeできる物
バイト単位以外の読み書きは不可能
JavaではStreamというクラスはない。
後述のInputStreamとOutputStreamに分かれている。
InputStream
readのみできるstream
OutputStream
writeのみできるstream
ストリームで何を読み書きするのか?
プログラミングにおいて読み書きするものなら何でもストリームで!
ファイル、キーボード入力、ソケット、配列など
バッファリングとは?
1バイトずつ読み書きしていると入出力の処理が多くなりすぎてパフォーマンス悪い
→一定たまるまでメモリに貯めて、一定たまったらOSに読み書き命令を出す
→これがバッファリング
一定貯まる前でも強制的に書き込みをするのはflush()というメソッド。
バッファリングを実装した物
- BufferedInputStream
- BufferedOutputStream
読み書きが便利になるクラス
バイト単位では面倒な時のために文字単位で読み書きするクラスがある
バイトと文字の違い
- バイト:0x00~0xFFのみ
- 文字(2バイト): 0x0000〜0xFFFF
Reader
ストリームからバイトではなく"文字単位"で読む物
Writer
ストリームからバイトではなく"文字単位"で書き込む物
BufferedReader
Readerにバッファリングをつけたもの
BufferedWriter
Writerにバッファリングをつけたもの