ファイルの読み書き、Socket通信、そういった部分に出てくる、
「ストリーム」の概念がよくわかりません。

サンプルソースをコピペして、実装したい機能のコーディングはできていますが、
これらの概念がよく分からず使っている状態です。

String型やbyte[]型のオブジェクトを、
InputStream、OutputStream(それらの派生クラス)に対して読んだり書いたりするとデータのやり取りができる
・・・ぐらいの認識しかないです。

的確に理解できる説明をいただきたいです。