Question

chaque fois que je crée un objet FileInfo et accède à sa propriété lastaccesstime, il reste toujours quelques minutes. la fenêtre de la propriété du fichier reste constante, mais l'application indique qu'il s'écoule généralement quelques minutes après l'heure de la fenêtre de la propriété.

De plus, j'ai remarqué que si je glissais le fichier dans la fenêtre de commande pour passer le nom du fichier en argument, le temps d'accès était mis à jour la plupart du temps, mais pas toujours.

Quelle pourrait en être la cause?

ci-dessous est un exemple:

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

texte de remplacement http://img407.imageshack.us/img407/4728/propertiesox6 .png texte de remplacement http://img380.imageshack.us/img380/7752/appgt0.png

Était-ce utile?

La solution

D'après mon expérience, l'heure du dernier accès est notoirement peu fiable. Selon http://technet.microsoft.com/en-us/library/ cc781134.aspx ...

  

L'heure du dernier accès sur le disque n'est pas toujours à jour, car NTFS recherche un intervalle d'une heure avant de forcer les mises à jour de la dernière heure d'accès sur le disque. NTFS retarde également l'écriture de la dernière heure d'accès sur le disque lorsque des utilisateurs ou des programmes effectuent des opérations en lecture seule sur un fichier ou un dossier, par exemple pour répertorier le contenu du dossier ou pour lire (sans modifier) ??un fichier dans le dossier.

Apparemment, la copie en mémoire sera correcte, mais selon mon expérience, vous obtiendrez peut-être une valeur en mémoire cache qui pourrait être obsolète. Notez également que la dernière heure d'accès peut être désactivée par l'utilisateur et est désactivée par défaut dans Vista et 2008.

Autres conseils

L'article de MSDN contenant des informations de base sur les durées des fichiers a ceci à dire sur la résolution temporelle des fichiers et les derniers temps d'accès:

  

Par exemple, sur FAT, la résolution de création de l'heure a une résolution de 10 millisecondes, la résolution du temps d'écriture est de 2 secondes et la résolution du temps d'accès est d'un jour (en réalité, la date d'accès). NTFS retarde les mises à jour jusqu'à l'heure du dernier accès d'un fichier jusqu'à une heure après le dernier accès.

Cela impliquerait que sur FAT et NTFS, la dernière heure d'écriture ne sera généralement pas très précise, bien que je ne sois pas sûr que les valeurs exactes citées soient correctes.

Hmm, peut-être ceci à partir de MSDN :

  

Lors du premier appel, FileSystemInfo   appelle Refresh et renvoie le contenu en cache   informations sur les API pour obtenir des attributs   etc. Lors des appels suivants, vous   doit appeler Refresh pour obtenir le dernier   copie de l'information.

Mais vous voyez que la LAT reste toujours quelques minutes dans le [futur | passé]?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top