Javaでファイル操作
ファイルシステム上のファイル(パス)を扱う方法
java.io.File 昔からあるファイル操作クラス
java.nio.file Java 7から使える新しいファイル操作パッケージ
java.nio.file.Path など。
全体的に古いものと新しいので書き味がかなり変わる。
ファイルの読み書き
バイナリファイルの操作
読み込み
new FileInputStream(new File('path')) Java6以前の方法。検査例外多数、二重try/catchが不便。
書き込み
new FileOutputSteam(new File('path')) Java6以前。検査例外。
Files.newOutputStream(Paths.get('path'), StandardOpenOptiocn.APPEND, ...) Java7以降
Files.write(new Path('path'), data, StandardOpenOptiocn.APPEND, ...) 同Java7以降
テキストファイルの操作
文字コードやまとめて読むためのバッファリングなどの概念が必要になる。
読み込み
new BufferedReader(new InputStreamReader(new FileInputStream(new File("path"), "UTF-8")))
Java6以前。bufferedReaderのインスタンスからreadLineできる。検査例外、手動closeで二重try/catch。
Files.newBufferedReader(Paths.get("path"), StandardCharsets.UTF_8)
Java7以降。
書き込み
new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("path"), "UTF-8")))
Files.newBufferedWriter(Paths.get("path"), StandardCharsets.UTF_8)
BufferedReader にはJava8でStream APIが生えており、reader.lines().map(s -> s.split(" ")[0]).forEach()のように書ける。
ファイル自体のコピー、削除、ディレクトリ操作
Java6以前はFileChannelオブジェクトで操作する。ファイルをコピーするAPIはない。
Java7以降では Files にcopyとか便利なメソッドがある。