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 まで。
inserted by FC2 system