お仕事で新人研修ぶりでコードを書いています。
ストリームってすっごい基礎的なことだと思うんですが、
わかんなかったもんはしょうがないので調べていきます。
ストリームって日本語にしたら「流れ」です。
ストリームを説明する文章にもよく「データの流れ」なる言葉が出て来る気がします。
でも、「流れ」って言われるとピンとこない。
定義
プログラミングの分野では、データの入出力全般を扱う抽象的なオブジェクトやデータ型を意味する場合が多い。データが出入りする何らかの対象(メモリ領域やファイル、ネットワークなど)をプログラム中で扱えるように抽象化したもので、接続や切断、書き込みや読み込みなどを簡易な操作で行うことができる。
出典
e-words(http://e-words.jp/w/%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0.html)
「データが出入りする領域をプログラムで操作できるように扱えるようにしたもの」ぐらいの意味でしょうか。
ではJavaでストリームを扱うにはどうしたらいいのでしょう?
Javaの入出力機能はすべて、文字やバイトシーケンスの流れを表す「ストリーム」という概念をもとに設計されている。Javaにおいては、ストリームはデータの読み書きを行う標準化された機構であり、Javaに含まれている可変のデータソースを表すオブジェクトはすべて、ストリームとしてデータを読み書きするメソッドを提供している。
出典
builder(https://builder.japan.zdnet.com/java/20363416/)
あ、Javaで入出力処理はすべてストリームで行われると…
ストリーム指向の入出力を扱うクラスは、多くの場合java.ioパッケージに含まれている。このパッケージの中心となるのはInputStreamクラス、OutputStreamクラスの2つの抽象クラスだ。他のストリーム指向のクラスは、すべてこれらのクラスを拡張して定義されている。
出典
同上
なるほど。出典もとのサイトにも例示されてますが、
FileReaderクラスもInputStreamクラスを継承してるわけですね。
で、それを使ったらストリームを使ってることになると。
java.io.FileReader fileReader = new java.io.FileReader("/home/me/myfile.txt");
int aChar = 0;
while ((aChar = fileReader.read()) >= 0){
System.out.println((char)aChar);
}
じゃあ、ストリームを使うのと使わないのでどんな違いがあるの?
という疑問も浮かびますが、それについてはまた後日。。。