Directory.GetFiles не збирає всі файли


23

У мене є якийсь код, який призначений для отримання файлів у каталозі, який досить простий

foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv", SearchOption.TopDirectoryOnly))

Файли названі так:

Totals.CSV142344
Totals.CSV142409
Totals.CSV142433
Totals.CSV142501
Totals.CSV142528

Моє питання полягає в тому, що він не збирає останній файл.

Я виправив код, поставивши це замість:

foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv*", SearchOption.TopDirectoryOnly))

Скажімо, отримуйте будь-які файли, що містять і Totals, і .csv, з будь-чим після .csv.

Чого я не отримую - це те, що він отримав чотири найкращі файли, але не найнижчий

Я міг би подумати, що жоден з файлів не буде зібраний за оригінальним кодом?


1
Чи видалений відповідний файл, але він залишається відкритим антивірусом чи подібним? Це може призвести до файлу "привид", де дослідник все ще перелічує його, але він фактично не існує на диску.
Лассе В. Карлсен

6
Мабуть, перші чотири файли мають 8,3 імені, а останній - ні.
GSerg

1
Коротка назва - це ваш немед, коли файлів занадто багато, то вони Totals~n.csvбільше не підходять, і ви можете отримати лише збіг Total*. Введіть, dir /x tot*.*щоб побачити короткі імена. Ви віддаєте перевагу Totals.csv*і, можливо, доведеться фільтрувати, щоб усунути випадкові збіги.
Ганс Пасант

Відповіді:


20

Мабуть, GetFilesдотримується логіки відповідності шаблону, оскільки вона реалізована в dirкоманді say .

MSDN

Оскільки цей метод перевіряє імена файлів як у форматі імені файлу 8.3, так і у довгому форматі імені файлу, шаблон пошуку, схожий на, "*1*.txt"може повертати несподівані імена файлів. Наприклад, за допомогою шаблону пошуку "*1*.txt"повертається "longfilename.txt", оскільки еквівалентний формат імені файлу 8.3 "LONGFI ~ 1.TXT".

Як зазначав @GSerg, деякі ваші файли мають ім'я, що відповідає 8.3.

dir /x *Totals*.csv*

2020-01-31  09:33                 0 TOTALS~1.CSV Totals.CSV142344
2020-01-31  09:33                 0 TOTALS~2.CSV Totals.CSV142409
2020-01-31  09:33                 0 TOTALS~3.CSV Totals.CSV142433
2020-01-31  09:33                 0 TOTALS~4.CSV Totals.CSV142501
2020-01-31  09:33                 0 TO5404~1.CSV Totals.CSV142528

Спробуйте змінити шаблон, щоб Totals.csv*він відповідав усім файлам.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.