Réduire au minimum les accès au disque lors de l'obtention des attributs de fichiers dans un répertoire

StackOverflow https://stackoverflow.com/questions/1941633

  •  20-09-2019
  •  | 
  •  

Question

Comme le titre l'indique, je suis à la recherche d'un moyen d'obtenir les attributs d'un grand nombre de fichiers dans un répertoire, mais sans y ajouter le coût d'un accès disque supplémentaire pour chaque fichier.

Par exemple, si je reçois l'attribut Nom des objets FileInfo dans une collection, alors il n'y a pas d'accès disque supplémentaire. Toutefois, si je reçois le LastWriteTimeUtc, puis un accès disque supplémentaire est fait.

Mon code:

DirectoryInfo di = new DirectoryInfo(myDir);
FileInfo[] allFiles = di.GetFiles("*.*", SearchOption.TopDirectoryOnly);
foreach (FileInfo fInfo in allFiles)
{
    name = fInfo.Name  //no additional disk access made
    lastMod = fInfo.LastWriteTimeUtc  //further disk access made!!!
}

Quelqu'un sait-il d'une manière que je peux obtenir cette information dans un aller-retour? J'aurais espéré que DirectoryInfo.GetFiles () le fait, mais pas de chance.

Merci d'avance.

Était-ce utile?

La solution 2

Alors, cela se produit par la conception. Le LastWriteTimeUtc est paresseux chargé. Donc, rien à faire d'autre écrire mon propre composant.

Autres conseils

Si vous vraiment se soucient de cela, vous devriez probablement écrire ceci dans C en utilisant FindFirstFile / GetFileTime, etc.

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