Help us understand the problem. What is going on with this article?

[Java]ストリームとは何か?

More than 5 years have passed since last update.

自分用のまとめ
間違いあればご指摘いただけると嬉しいです!

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にバッファリングをつけたもの

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away