Javaを使用してファイルの日付と時刻を更新する方法

ファイルの日付と時刻のプロパティは、nioパッケージのFilesオブジェクトのsetAttributeメソッドを使用して設定できます。

構文:

java.nio.file.Files.setAttribute(file.toPath(), "creationTime", time);

この例では、Fileオブジェクトを使用してファイルをロードします。 これは、パターンStringで定義された日付パターンを持つSimpleDateFormatを使用して日付と時刻の書式を設定します。 その後、ミリ秒の値を使用して日付がFileTimeに変換されます。 FileTimeの日付は、ファイルのパスを使用して属性として設定されます。 最終更新時刻、最終アクセス時刻、作成時刻は、ファイルの属性名を使用して設定します。

次のJavaファイルを作成します。

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.attribute.FileTime;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileUpdateDate {

    public static void main(String[] argv) {

	File file = new File("V:/tmp/test.txt");

	try {
	    String pattern = "yyyy-MM-dd HH:mm:ss";
	    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
	    Date timeToSet = simpleDateFormat.parse( "2015-12-01 10:00:00" );

	    FileTime time = FileTime.fromMillis( timeToSet.getTime() );

	    Files.setAttribute(file.toPath(), "lastModifiedTime", time);
	    Files.setAttribute(file.toPath(), "lastAccessTime", time);
	    Files.setAttribute(file.toPath(), "creationTime", time);
	} catch (IOException e) {
	    e.printStackTrace();
	} catch (ParseException e) {
	    e.printStackTrace();
	}

    }

}

FileTimeオブジェクトは、Dateオブジェクトからのミリ秒単位で作成されます。 これは1970年1月1日のミッドナイトGMT時代からのミリ秒数です。 このクラスのインスタンスは不変またはスレッドセーフです。 一度作成されるか、別のスレッドによって変更することはできません。 異なる値を設定するには、新しいオブジェクトをインスタンス化する必要があります。

参考文献:

FileTime
SimpleDateFormat
BasicFileAttributeView