Javaファイルの作成時間、変更時間、アクセス時間(最適化を含む)

1376 ワード

Baic FileAttributes
Javaはプラットフォームをまたぐ必要を満たすために、そのFileクラスはlastModified()だけを提供します。すなわち、ファイルの最近の修正時間です。Linuxはファイルの作成時間を記録しないからです。Windowsプラットフォームのために開発されたプログラムは、ファイルの作成時間を読み込む必要があります。どうすればいいですか?
相変わらずstack overflowの答えです。
BasicFileAttributes bAttributes = null;
try {
    bAttributes = Files.readAttributes(file.toPath(), 
        BasicFileAttributes.class);
} catch (IOException e) {
    e.printStackTrace();
}
String fileName = file.getName();

//     
String changeTime = bAttributes.lastModifiedTime().toString();
//        
changeTime = fixStrDateFormat(changeTime);
システムには作成時間がないファイルやフォルダがあります。
時間を速めて処理する
注意する点:私は直接に通常のSimpleDateFormat類を使って時間のフォーマットを行っていません。
テストでは、SimpleDateFormatを使用する速度が非常に遅いですが、私はデータベースカリキュラムの大作業を完了するには、ハードディスクのすべてのファイルに情報を読み取り、データベースを挿入する必要があります。10000桁の場合、この速度は受け入れられません。
lastModifiedTime().toString()を直接取得することで、「2017-05-12 T 18:37:45.61793 Z」というような形の文字列を迅速に得ることができます。subStringを使って簡単に処理すれば、「2017-05-12 18:45.45」形式の文字列が得られます。
しかし、Windowsシステムの属性情報と照らし合わせると、直接取得する時間は正確ではなく、正確には8時間前の東八区の北京時間に対応し、明らかにグリニッジ時間である。
続いて自分で時間の期日の転化を完成する必要があって、過程は基礎を比較して、もうくどくど述べません。