リア充爆発日記

You don't even know what ria-ju really is.

InputStreamやOutputStreamとはなにか

InputStreamやらOutputStreamやらが出てきて、今までなんのこっちゃわからないで使ってきたので改めて調べてみたときの自分の理解メモ。


InputStreamとOutputStreamの目的

ここのやり取りがわかりやすかったのでここのまとめ。
http://stackoverflow.com/questions/1830698/what-is-inputstream-output-stream-why-do-we-use-them-and-when-do-we-use-each

InputStream(入力用)やOutputStream(出力用)の目的は、入出力を抽象化すること。つまり、入出力のソースがファイルだろうがWebサイトだろうが標準入出力だろうが関係ないようにすること。

Input(Output)Streamは抽象クラスで、入出力を伴う処理は、これらのクラスを継承したクラスで行う。FileInputStreamとかSocketInputStreamとか。
で、これらはInput(Output)Streamの設計に基づいて作られることになるので、入出力のインターフェース(ファイルとか)がなんであろうともInput(Output)Streamで処理できる。


Streamとは

ここを参考。
http://www.coderanch.com/t/527192//java/stream-java

Streamというのは直訳で「流れ」。デカイデータは1度に処理すると負荷がきついので、分けて流す。分けられたデータはトンネルから出てくる電車のように一両ずつ渡されるので、その単位で処理をする。


ついでにBufferedStreamとは

Buffereの意味はわかっていたつもりだけど、再確認の意味を込めて。

Bufferは直訳で「和らげる」という意味だった。溜めるとかだと思っていた。
例えばファイルの出力時など、Buffer抜きだとバイトごとにディスクに書き込むことになり、非常に効率が悪い。1Kb単位でBufferするのに比べるとハードディスクへのアクセスが1024倍になる。


そんな感じ?