このエントリーをはてなブックマークに追加

ポイントというか心にとまったことのアウトプットです。

※個人的な重要度のバイアスがかかっているので、「べつにいいかー」と思ってたりすることはメモしてません。

※手を動かして理解したことなど、間違いを含む可能性があります。

※手元の環境は断りがなければ基本はjava 7 をIntelliJ IDEA Ultimate on OSX で動かしてます。


「ファイルとネットワーク」

  • I/Oストリーム java7以降はtry-with-resourceを使う(close忘れを防ぐ)
  • IOExceptionは検査例外。java8では実行時例外のUncheckedIOExcepionがあるので、必要に応じてそれを使う
  • バイトI/Oストリーム:InputStream、OutputStream
  • ファイルの読み書きは4キロバイト以上の単位で行う
  • 標準入出力は、java.lang.Systemのクラスフィールド(in, out, err)で扱うことができる(Unix依存)
  • java.io.Console System.cnsole()でシングルトンを取得可能
  • 文字I/Oストリーム:Reader、Writer
    • 文字コードがデフォルトロケールでよければFileReaderとFileWriter。明示的にロケールしているする場合はInputStreamReader、OutputStreamWriter
  • バイトI/Oストリームから 文字I/Oストリームへの変換
  • バッファリング:1バイト・1文字ずつでアクセスするのは低速なためまとめて読み込み・書き込みする
    • 基本的にバッファリングI/Oストリームを利用するべき。
    • 出力用のバッファリングI/Oストリームは遅延対策のため、強制的に出力するflushメソッドが使える
  • ランダムアクセス:ファイルの任意の位置を読み書き
    • RandomAccessFileと、Filechannelがある。同等
  • ByteArrayOutputStream:配列(固定長)ではなく可変長で扱いたい場合。
  • java.nio.file.Path(java.io.Fileと等価), java.nio.file.Pathes
  • java.nio.file.Filesユーティリティクラスがとても便利そう
    • ☆要補足
  • java.nio.file.WatchServiceは指定ディレクトリのファイル変更を感知できる
    • ☆要補足
  • I/Oストリームをストリーム(パイプライン)処理が可能
    • ☆要補足