Domanda

ogni volta che creo un oggetto FileInfo e accedo alla sua proprietà lastaccesstime, è sempre qualche minuto libero. la finestra delle proprietà del file rimane costante, tuttavia l'applicazione mostra che in genere è pochi minuti dopo l'ora della finestra delle proprietà.

Inoltre, ho notato che se trascino il file nella finestra cmd per passare il nome file come argomento, il tempo di accesso si aggiorna il più delle volte, ma non sempre.

Cosa potrebbe causare questo?

di seguito è un esempio:

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

È stato utile?

Soluzione

Nella mia esperienza, il tempo dell'ultimo accesso è notoriamente inaffidabile. Secondo http://technet.microsoft.com/en-us/library/ cc781134.aspx ...

  

L'ora dell'ultimo accesso sul disco non è sempre attuale perché NTFS cerca un intervallo di un'ora prima di forzare gli aggiornamenti dell'ora dell'ultimo accesso sul disco. NTFS ritarda anche la scrittura dell'ultimo tempo di accesso sul disco quando utenti o programmi eseguono operazioni di sola lettura su un file o una cartella, come elencare il contenuto della cartella o leggere (ma non modificare) un file nella cartella.

Apparentemente, la copia in memoria sarà corretta, ma secondo la mia esperienza, potresti ottenere un valore memorizzato nella cache che potrebbe non essere aggiornato. Inoltre, tieni presente che l'ultimo orario di accesso potrebbe essere disattivato dall'utente e disattivato per impostazione predefinita in Vista e 2008.

Altri suggerimenti

L'articolo MSDN con informazioni di base sui tempi dei file dice questo sulla risoluzione dei tempi dei file e sui tempi dell'ultimo accesso:

  

Ad esempio, in FAT, il tempo di creazione ha una risoluzione di 10 millisecondi, il tempo di scrittura ha una risoluzione di 2 secondi e il tempo di accesso ha una risoluzione di 1 giorno (in realtà, la data di accesso). NTFS ritarda gli aggiornamenti all'ultimo tempo di accesso per un file fino a un'ora dopo l'ultimo accesso.

Ciò implicherebbe che sia su FAT che su NTFS, il Last Last Time Time non sarà generalmente molto preciso, anche se non sono sicuro che i valori esatti che citano siano corretti.

Hmm, possibilmente questo da MSDN :

  

Alla prima chiamata, FileSystemInfo   chiama Aggiorna e restituisce la cache   informazioni sulle API per ottenere gli attributi   e così via. Nelle chiamate successive, tu   deve chiamare Aggiorna per ottenere le ultime   copia delle informazioni.

Ma vedi che la LAT è sempre di pochi minuti nel [futuro | passato]?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top