質問

FileInfoオブジェクトを作成してlastaccesstimeプロパティにアクセスするたびに、常に数分オフになります。ファイルプロパティウィンドウは一定のままですが、アプリケーションは通常、プロパティウィンドウ時間の数分後であることを示します。

また、ファイルをcmdウィンドウにドラッグしてファイル名を引数として渡すと、ほとんどの場合アクセス時間は更新されますが、常にではないことに気付きました。

この原因は何ですか?

以下は例です:

static void Main(string[] args)
{
    if (args.Length > 0)
    {
        FileInfo fi = new FileInfo(args[0].ToString());
        Console.WriteLine(args[0]);
        if (fi.Exists)
        {
            Console.Write("Current: " + DateTime.Now + "\n");
            Console.Write("LAT: " + fi.LastAccessTime + "\n");
            Console.Write("LWT: " + fi.LastWriteTime + "\n");
            Console.Write("CT: " + fi.CreationTime + "\n");
        }
        Console.ReadKey();
    }
}

代替テキストhttp://img407.imageshack.us/img407/4728/propertiesox6 .png 代替テキストhttp://img380.imageshack.us/img380/7752/appgt0.png

役に立ちましたか?

解決

私の経験では、最後のアクセス時間は信頼できないと言われています。 http://technet.microsoft.com/en-us/library/によるとcc781134.aspx ...

  

NTFSは、ディスクへの最終アクセス時刻の更新を強制する前に1時間間隔を探すため、ディスク上の最終アクセス時刻は常に最新ではありません。 NTFSは、ユーザーまたはプログラムがファイルまたはフォルダーの読み取り専用操作(フォルダーの内容の一覧表示やフォルダー内のファイルの読み取り(変更はしない)など)を実行すると、ディスクへの最終アクセス時刻の書き込みも遅延します。

どうやら、メモリ内のコピーは正しいはずですが、私の経験では、キャッシュされた値を取得する可能性があります。また、最終アクセス時刻はユーザーによってオフにされる場合があり、Vistaおよび2008ではデフォルトでオフになっていることに注意してください。

他のヒント

ファイル時間に関する基本情報を含むMSDNの記事には、ファイルの時間解像度と最終アクセス時間についての説明があります:

  

たとえば、FATでは、作成時間の解像度は10ミリ秒、書き込み時間の解像度は2秒、アクセス時間の解像度は1日(実際にはアクセス日)です。 NTFSは、ファイルの最終アクセス時刻への更新を、最終アクセスから最大1時間遅らせます。

これは、FATとNTFSの両方で、最終書き込み時刻が一般にあまり正確ではないことを意味しますが、引用する正確な値が正しいかどうかはわかりません。

うーん、おそらく MSDNから

  

最初に呼び出されたとき、FileSystemInfo   Refreshを呼び出し、キャッシュされたものを返します   属性を取得するためのAPIに関する情報   等々。その後の呼び出しでは、あなたは   最新の情報を取得するには、更新を呼び出す必要があります   情報のコピー。

しかし、[未来|過去]でLATが常に数分であるのを見ていますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top