Estoy tratando de calcular los tamaños de directorio de una manera que divide la carga para que el usuario pueda ver el progreso del recuento. Pensé que una forma lógica de hacer esto sería crear primero el árbol de directorios y luego hacer una operación contando la longitud de todos los archivos.Cálculo de tamaños de directorio
Lo inesperado es que la mayor parte del tiempo (E/S de disco) proviene de la creación del árbol de directorios, y luego pasar al FileInfo[]
casi instantáneamente sin prácticamente ninguna E/S de disco.
He intentado con ambos Directory.GetDirectories()
, simplemente creando un árbol de cadenas de nombres de directorio, y usando un objeto DirectoryInfo
, y ambos métodos todavía toman la mayor parte del tiempo de E/S (leyendo el MFT por supuesto) comparado para repasar todos los FileInfo.Length
para los archivos en cada directorio.
Supongo que no hay manera de reducir la E/S para hacer que el árbol sea significativo, supongo que me pregunto por qué esta operación lleva mucho más tiempo en comparación con examinar los archivos más numerosos.
Además, si alguien puede recomendar una forma no recursiva para contar cosas (ya que parece que necesito simplemente dividir la enumeración y equilibrarla para hacer que el tamaño de conteo sea más receptivo). Hacer un hilo para cada subdirectorio fuera de la base y dejar que la competencia del planificador equilibre las cosas probablemente no sería muy bueno, ¿verdad?
EDIT: Repository for this code
También he tenido problemas para calcular el tamaño del directorio. He hecho exactamente lo que has hecho. Intentó> fileInfo [] y luego> Directory.GetDirectories(). Pero todavía no sé de ninguna mejor manera. –
¿Estás diciendo que llamar a GetDirectories() lleva mucho tiempo? No he visto eso, pero una vez más, nunca he hecho esto con una gran cantidad de directorios. Además, ¿por qué te importaría si es recursivo? Esta es una tarea recursiva y nunca tendrás tantos directorios anidados que volarás. –
consulte http://stackoverflow.com/questions/468119/whats-the-best-way-to-calculate-the-size-of-a-directory-in-net –