Java > Filesクラス
更新日
2012-06-28
広告
java7で追加されたjava.nio.file.Filesの使い方を紹介します。
ファイルの作成と書き込み
以下のサンプル WriteFile.java では、java7の新機能をいくつか使い、ファイルの作成と書き込みを行っています。
import java.io.BufferedWriter; import java.io.PrintWriter; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Path; import java.nio.file.StandardOpenOption; public class WriteFile { public static void main(String[] args) throws Exception { // デフォルトのFileSystemオブジェクトを取得 FileSystem fs = FileSystems.getDefault(); // 書き込む対象のファイルのパスを指定して、Pathオブジェクトを取得 Path path = fs.getPath("write-test.txt"); // try-with-resources構文で、ファイルを開く。 // StandardOpenOptionは複数指定可能。この例の場合は、ファイルが無ければ作成し、ファイルがあれば追記する形式でファイルを開く。 try (PrintWriter pw = new PrintWriter(Files.newBufferedWriter(path, Charset.forName("UTF-8"), StandardOpenOption.CREATE, StandardOpenOption.APPEND))) { pw.println("test line."); // ファイルに書き込む } } }
WriteFileは、ファイル write-test.txt が無ければ作成し、"test line"という一行を書き込みます。write-test.txtが存在すれば、追記します。FileSystems.getDefault()で取得できるファイルシステムは、"user.dir"というシステムプロパティで指定されるパス(System.getPropert("user.dir")で確認できます)のファイルシステムになります。
では、実行してみます。
$ java WriteFile $ cat write-test.txt test line.
write-test.txtが作成され、"test line"という一行が書き込まれています。さらに実行してみます。
$ java WriteFile $ cat write-test.txt test line. test line.
二行目が追記されました。
ファイル名の変更
以下のサンプル RenameFile.java は、before.txtというファイルの名前を、after.txtというファイル名に変更します(RenameFile.classとbefore.txtは同じディレクトリに置かれています)。
import java.nio.file.Files; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Path; public class RenameFile { public static void main(String[] args) throws Exception { FileSystem fs = FileSystems.getDefault(); // 名前を変更したいファイルのパスを指定 Path path = fs.getPath("before.txt"); // 名前を変更 Files.move(path, path.resolveSibling("after.txt")); } }
RenameFileを実行してみます。最初、以下のようなファイル配置となっています。
$ ls RenameFile.class RenameFile.java before.txt
before.txtの内容は、"aaaa"です。
$ cat before.txt aaaa
RenameFileを実行して、ファイル名を確認してみます。
$ java RenameFile $ ls RenameFile.class RenameFile.java after.txt
before.txtが、after.txtに、名前変更されています。内容は、、
$ cat after.txt aaaa
このように、before.txtと同じです。
広告
お問い合わせは sweng.tips@gmail.com まで。