Directory.GetFiles tüm dosyaları almıyor


23

Yeterince basit bir dizinde dosyaları almak için bazı kod var

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

Dosyalar şu şekilde adlandırılır:

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

Benim sorunum, son dosyayı almak değil olmasıdır.

Bunun yerine koyarak kodu sabit:

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

Hem Toplamlar hem de .csv içeren dosyaları .csv'den sonra olsun.

Ne almıyorum neden ilk dört dosya var, ama alt değil.

Dosyaların hiçbirinin orijinal kod tarafından alınacağını düşünürdüm?


1
Söz konusu dosya silindi, ancak antivirüs veya benzeri bir yazılım tarafından açık tutuldu mu? Bu, kaşifin hala listelediği bir "hayalet" dosyasına yol açabilir, ancak artık diskte artık mevcut değildir.
Lasse V. Karlsen

6
Görünüşe göre ilk dört dosyanın 8.3 adı var ve son dört dosya yok .
GSerg

1
Kısa ad, düşmanıdır, çok fazla dosya olduğunda Totals~n.csvartık uymaz ve sadece bir eşleşme elde edebilirsiniz Total*. Tip dir /x tot*.*kısa adlarını görmek. Sen iyilik Totals.csv*ve kazara eşleşmeleri ortadan kaldırmak için filtre gerekebilir.
Hans Passant

Yanıtlar:


20

Görünüşe göre komutta GetFilesuygulandığı gibi desen eşleştirme mantığına yapışır dir.

MSDN

Bu yöntem, hem 8.3 dosya adı biçimine hem de uzun dosya adı biçimine sahip dosya adlarını kontrol ettiğinden, benzer bir arama deseni "*1*.txt"beklenmedik dosya adları döndürebilir. Örneğin "*1*.txt", eşdeğer 8.3 dosya adı biçimi "LONGFI ~ 1.TXT" olduğundan, bir arama deseni kullanmak "longfilename.txt" döndürür.

@GSerg'in işaret ettiği gibi, bazı dosyalarınız 8.3 adıyla eşleşir.

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

Deseni Totals.csv*tüm dosyalarla eşleşecek şekilde değiştirmeyi deneyin .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.