最近、凄く久しぶりのJava開発してるのですが、1.7で導入された便利なクラスが
あったので、忘れないうちにメモメモ。try-with-resourceとか便利になりましたねー。
1.7より、java.nioに
java.nio.file
パッケージというのが導入されました。
そのパッケージの中に
java.nio.file.Files
クラスというのがありまして、ファイルやディレクトリに関する操作を
集めたユーティティクラスとなっています。メソッドは全部staticです。
readAllBytesとか.NETやってる人にはおなじみのメソッドとかがあります。
小さなファイルのデータを読み取りたいだけなのに、前まではいつものやり方で
データを読み取るコードを記述する必要がありましたが、Filesクラスを利用すれば
byte[] bytes = Files.readAllBytes(Paths.get(...));
で一発でとれます。便利。
あと、シンボリックリンクかどうか判定(isSymbolicLink)できたり
リンクを作成(createSymbolicLink)できたり
ファイルツリーを辿る(walkFileTree)ことができたりもします。
Filesクラスの各メソッドには、パスを表すPathクラスのオブジェクトを
渡す必要があります。このクラスも、1.7から追加されたクラスです。
Pathオブジェクトを取得するには
java.nio.file.Paths
クラスのgetメソッドを利用して取得します。
例えば、以下はユーザのホームディレクトリのPathオブジェクトを
取得します。
Path thePath = Paths.get(System.getProperty("user.home"))
なので、特定のファイルのデータを一気に読み取るには
byte[] bytes = Files.readAllBytes(Paths.get(System.getProperty("user.home"), "test.dat"));
みたいに記述したら取得できます。
Pathクラス (Pathsじゃなくて)の方には、.NETでいうFileSystemWatcherクラスと
同じような機能を持つregisterメソッドも存在します。これを利用するとファイルの作成・変更・削除の
タイミングを監視することが出来ます。
- Path#register メソッド
- http://docs.oracle.com/javase/jp/7/api/java/nio/file/Path.html#register(java.nio.file.WatchService, java.nio.file.WatchEvent.Kind[], java.nio.file.WatchEvent.Modifier...)
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場