Ridurre al minimo gli accessi al disco quando ottenere gli attributi di file in una directory

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

  •  20-09-2019
  •  | 
  •  

Domanda

Come suggerisce il titolo, sto cercando un modo per ottenere gli attributi di un gran numero di file in una directory, ma senza aggiungere il costo di un ulteriore accesso disco per ogni file.

Per esempio, se ho l'attributo Nome di oggetti FileInfo in una collezione, allora non c'è accesso al disco aggiuntivo. Tuttavia, se ho la LastWriteTimeUtc, poi un accesso al disco aggiuntivo è fatto.

Il mio codice:

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!!!
}

Qualcuno sa di un modo per ottenere queste informazioni su uno di andata e ritorno? Avrei sperato che DirectoryInfo.GetFiles () fa questo, ma senza fortuna.

Grazie in anticipo.

È stato utile?

Soluzione 2

Quindi, questo avviene in base alla progettazione. Il LastWriteTimeUtc è pigro caricato. Quindi, niente da fare altro scrivere la mia componente.

Altri suggerimenti

Se davvero cura di questo, probabilmente si dovrebbe scrivere questo in C usando FindFirstFile / GetFileTime, ecc

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