3

他の場所からコピーされた一連のファイルがWindowsディレクトリにあります。いずれかのファイルのプロパティを確認すると(右クリック-> [プロパティ])、次のように表示されます。

作成日:本日、2013年2月11日、午後2時51分56秒

変更日:2013年1月1日火曜日、午前8時30分04秒

アクセス:本日、2013年2月11日、午後2:51:56

「作成済み」フィールドと「アクセス済み」フィールドには基本的にファイルが実際に新しいディレクトリにコピーされた時刻が表示され、「変更済み」フィールドには元のファイルの変更日が表示されます。

Javaでは、file.lastModified()返されるものを使用すると、「アクセス済み」(または「作成済み」)タイムスタンプになります。元のファイルの「変更された」値を取得する方法はありますか?

4

3 に答える 3

3

Java 7 で「外部」ライブラリ (前述の JavaXT など) を利用することに加えて、新しいファイル API を使用することもできます (このJava 7 nio.2 チュートリアルを参照してください)。

File attribFile = new File("/tmp/file.txt");
Path attribPath = attribFile.toPath();
BasicFileAttributeView basicView =
    attribPath.getFileAttributeView(BasicFileAttributeView.class);
BasicFileAttributes basicAttribs = basicView.readAttributes();

System.out.println("Created: " + basicAttribs.creationTime());
System.out.println("Accessed: " + basicAttribs.lastAccessTime());
System.out.println("Modified: " + basicAttribs.lastModifiedTime());

追加のサンプルについては、この記事を参照してください。

于 2013-02-11T10:39:31.290 に答える
2

この JavaXT ライブラリを追加すると、次のようなことができるようになります。

javaxt.io.File file = new javaxt.io.File("/tmp/file.txt");
System.out.println("Created: " + file.getCreationTime());
System.out.println("Accessed: " + file.getLastAccessTime());
System.out.println("Modified: " + file.getLastModifiedTime());
于 2013-02-11T10:23:37.850 に答える
0

JavaXTとJava7が機能しなかった限り、Windowsプラットフォームのみを使用する準備ができている場合は、さらにエキゾチックなアプローチを試してみてください。ほとんどの*nixファイルシステムにはファイル作成属性が存在しないため、大きな制限とは思えません。

1)。のpasre出力

    Runtime.getRuntime().exec("cmd /c dir c:\\logfile.log /tc");

ここでの実例

2)。別の「外部」ライブラリを試してください。例:FileTimes

3)。JNAを利用して、WindowsAPI関数を直接呼び出す時間を取得できます。ところで、JNAとファイル属性関数を使ったコード例を見つけようとしたとき、この質問を見つけたので、あなたの質問は重複しているようです:-)

于 2013-02-11T15:40:18.340 に答える