C # Есть ли более быстрый способ, чем FileInfo.Length с несколькими файлами сравнения? - PullRequest
1 голос
/ 29 апреля 2011

Я пытался сравнить файлы из двух разных сред. Обе среды доступны через сетевой диск.

Сначала я проверил, присутствует ли файл в обеих средах (чтобы сэкономить время), затем я запрашиваю FileInfo для обоих файлов, чтобы сравнить их размеры (FileInfo.Length).

Моя цель состоит в том, чтобы заполнить список просмотра всеми файлами, которые не имеют одинаковый размер, чтобы исследовать их позже.

Мне трудно понять, что проводник Windows так быстро получает размер многих файлов, а FileInfo занимает так много времени ...

Спасибо. Ben

Ответы [ 2 ]

3 голосов
/ 29 апреля 2011

Если вы используете DirectoryInfo.GetFiles ( some-search-pattern ) для получения файлов, а затем используйте экземпляр FileInfo, возвращенный из этого вызова, тогда свойство FileInfo.Length будет кэшировано из поиска,

Будет ли это чем-то помогать, очевидно, зависит от того, как выполняется поиск по сравнению с проверкой, которую вы делаете в настоящее время (если поиск медленнее, вы можете ничего не получить).Тем не менее, это может быть стоит посмотреть.

1 голос
/ 29 апреля 2011

Вы можете попробовать сделать это способом операционной системы. Вы звоните через системные вызовы win32. Вы можете начать с этой страницы,

http://www.pinvoke.net/default.aspx/kernel32.getfilesize

...