3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ストリームって何ぞ

Last updated at Posted at 2019-07-27

お仕事で新人研修ぶりでコードを書いています。
ストリームってすっごい基礎的なことだと思うんですが、
わかんなかったもんはしょうがないので調べていきます。

ストリームって日本語にしたら「流れ」です。
ストリームを説明する文章にもよく「データの流れ」なる言葉が出て来る気がします。
でも、「流れ」って言われるとピンとこない。

定義

プログラミングの分野では、データの入出力全般を扱う抽象的なオブジェクトやデータ型を意味する場合が多い。データが出入りする何らかの対象(メモリ領域やファイル、ネットワークなど)をプログラム中で扱えるように抽象化したもので、接続や切断、書き込みや読み込みなどを簡易な操作で行うことができる。

出典
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);
}

じゃあ、ストリームを使うのと使わないのでどんな違いがあるの?
という疑問も浮かびますが、それについてはまた後日。。。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?