Javaの勉強5 Byte Streams / Character Streams / Buffered Streams / Scanner

Generics

昨日はGenericsをさらっと読んだんけど。まぁ軽く使う分には問題ない感じでした。
使いこなすには知識は足りないんだけど、必要になったらひしだまさんとこ読もうかなと思ったり。

Java総称型メモ(Hishidama's Java Generics Memo)

Basic I/O

ということでチュートリアルも次の記事に進みました。わぃ。
今日はBasic I/O。ちゃんと理解できてないからやっとこと思う。

I/O Streams

Byte Streams

  • 8bit バイトでデータを扱う。
  • InputStream / OutputStream を継承したクラス。
    • 例。FileInputStream / FileOutputStream。
  • ローレベルなのであんまり直接は使うことない。

f:id:bufferings:20141112081848p:plain

Character Streams

  • 16bit Characterでデータを扱う。
  • Reader / Writer を継承したクラス。
    • 例。FileReader / FileWriter。
  • 中でバイトストリーム使ってる
    • 例。FileReaderはFileInputStreamを使ってる。
  • Characterなので改行を識別できる。→これがBufferedReaderで使われてたりする。

f:id:bufferings:20141112082846p:plain

Buffered Streams

  • バッファして効率よく処理しましょう。
  • Byte Streams / Character Streams をラッピングする感じで使える。4つ。
    • BufferedInputStream / BufferedOutputStream
    • BufferedReader / BufferedWriter
  • バッファを書き込むにはflushするよ。

Scanning

Scannerというクラス。

  • トークンに区切れるよ
  • デフォルトだとホワイトスペース(空白・タブ・改行文字。詳しくはCharacter.isWhitespace参照)で区切るよ
  • 正規表現で区切り文字を指定することができるよ
  • ストリームじゃないけど中で使ってるストリームを閉じるためにclose呼べよ
  • 文字列として読み込む以外にもプリミティブ(char以外)とBigInteger,BigDecimalで読めるよ
  • 3桁カンマ区切りのとかも読めるけどロケール注意な

Formatter

あ、時間切れだ。次はFormatterからだな。

今日のIDEA

Command + F4 でファイルを閉じる。