Javaの勉強7 (I/O Streams) CommandLine / Data Streams / Object Streams

今日はここから。

おさらい

Type Interface Buffered Format
Byte Streams
8bit bytes
InputStream
OutputStream
BufferedInputStream
BufferedOutputStream
PrintStream
Character Streams
16bit characters
Reader
Writer
BufferedReader
BufferedWriter
PrintWriter
  • Scanner使えば区切り文字とかで読み込むことができる。

I/O from the Command Line

2通りある。

Standard Stream

  • System.in, System.out, System.err
  • 歴史的な理由によりCharacter StreamsではなくByte Streams。つまりPrintStream。
  • PrintStreamはByte StreamsだけどCharacterが扱えるようにエミュレートしてるよ。
  • System.inはCharacter Stream的な機能はないよ。使いたかったらInputStreamReaderでラッピングしてね。

Console

  • Consoleってクラスあるよ。System.console()で取得できるよ。使えない時はnullが返されるよ。
  • こいつはCharacter Streamsだよ。つまりreader/writerね。
  • パスワード扱うのに便利だよ(readPassword)
    • エコーしない
    • char[]で返すから文字列と違って使い終わったら上書きできるよ

上書きできる、のところが一瞬???ってなったけど。そっか。

Arrays.fill(newPassword1, ' ');

Data Streams

DataOuput / DataInput インターフェイス
まぁ今のところ使わなさそうだな。

double,float,int,long,boolean,Stringを読み書きできるStream。
小数値をfloat/doubleで扱うからお金とか扱うなら使えないよ!って書いてある。
EOFのときはEOFExceptionが投げられるよ。

Object Streams

これも直接使うことはなさそうだなー。
こっちはBigDecimal使えるんだぜ(どや!

てことで、I/O Streamsはおしまーい。Byte StreamsとCharacter Streamsがちゃんと理解できてよかった!
来週はNIO.2だなー。