Frage

Jedes Mal wenn ich ein Fileinfo-Objekt erstellen und darauf zuzugreifen Lastaccesstime Eigenschaft ist, ist es immer ein paar Minuten. die Dateieigenschaftsfenster bleiben konstant, aber die Anwendung zeigt, dass es in der Regel ein paar Minuten nach dem Eigenschaftsfenster Zeit.

Auch ich bemerkt, dass, wenn ich die Datei in das CMD-Fenster ziehen Sie den Dateinamen als Argument übergeben, die Zugriffszeit-Updates die meiste Zeit, aber nicht immer.

Was könnte die Ursache sein?

unten ist ein Beispiel:

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();
    }
}

alt text http://img407.imageshack.us/img407/4728/propertiesox6 .png alt text http://img380.imageshack.us/img380/7752/appgt0.png

War es hilfreich?

Lösung

Nach meiner Erfahrung der letzten Zugriffszeit ist notorisch unzuverlässig. Nach http://technet.microsoft.com/en-us/library/ cc781134.aspx ...

  

Die letzte Zugriffszeit auf der Festplatte ist nicht immer aktuell, weil NTFS für ein Intervall von einer Stunde sieht vor dem letzten Zugriffszeit-Updates auf der Festplatte zu zwingen. NTFS verzögert auch die letzte Zugriffszeit auf die Festplatte zu schreiben, wenn Benutzer oder Programme ausführen Nur-Lese-Operationen auf eine Datei oder einen Ordner, wie der Inhalt des Ordners Notierung oder Lesen (aber nicht zu ändern), um eine Datei im Ordner.

Anscheinend wird die im Speicher befindlichen Kopie korrekt sein, aber nach meiner Erfahrung, können Sie einen zwischengespeicherten Wert erhalten, die nicht mehr aktuell sein kann. Beachten Sie auch, dass im letzten Zugriffszeit durch den Benutzer ausgeschaltet werden kann, und wird ausgeschaltet, die standardmäßig in Vista und 2008.

Andere Tipps

im MSDN-Artikel mit grundlegenden Informationen über die Dateizeiten hat folgendes zu sagen über die Dateizeitauflösung und Letzter Zugriff Zeiten:

  

Zum Beispiel auf FAT, erstellen Zeit eine Auflösung von 10 Millisekunden hat, schreiben Zeit eine Auflösung von 2 Sekunden aufweist, und die Zugriffszeit hat eine Auflösung von 1 Tag (wirklich, das Zugriffsdatum). NTFS verzögert Updates der letzte Zugriffszeit für eine Datei, die von bis zu einer Stunde nach dem letzten Zugriff.

Dies, dass sowohl auf FAT und NTFS bedeuten würde, wird die letzte Schreibzeit im Allgemeinen nicht sehr präzise sein, auch wenn ich die genauen Werte, die sie zitieren bin nicht sicher, korrekt sind.

Hmm, möglicherweise dies von MSDN :

  

Beim ersten Aufruf Filesystem   Aktualisieren ruft und gibt die im Cache gespeicherten   Informationen über APIs Attribute zu erhalten   und so weiter. Bei nachfolgenden Aufrufen, Sie   müssen Refresh rufen Sie die neuesten zu bekommen   Kopie der Informationen.

Aber Sie sehen immer die LAT ein paar Minuten in der zu sein? [Zukunft | Vergangenheit]

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top