J'ai du code destiné à obtenir des fichiers dans un répertoire, ce qui est assez simple
foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv", SearchOption.TopDirectoryOnly))
Les fichiers sont nommés comme suit:
Totals.CSV142344
Totals.CSV142409
Totals.CSV142433
Totals.CSV142501
Totals.CSV142528
Mon problème est qu'il ne récupère pas le dernier fichier.
J'ai corrigé le code en mettant ceci à la place:
foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv*", SearchOption.TopDirectoryOnly))
Dire obtenir tous les fichiers contenant à la fois Totaux et .csv, avec quoi que ce soit après le .csv.
Ce que je ne comprends pas, c'est pourquoi il a obtenu les quatre premiers fichiers, mais pas le bas.
J'aurais pensé qu'aucun des fichiers ne serait récupéré par le code d'origine?
Totals~n.csv
ne convient plus et vous ne pouvez obtenir qu'une correspondanceTotal*
. Tapezdir /x tot*.*
pour voir les noms courts. Vous privilégiezTotals.csv*
et devrez peut-être filtrer pour éliminer les correspondances accidentelles.Réponses:
Apparemment,
GetFiles
adhère à la logique de correspondance de motifs telle qu'elle est implémentée dans, disons, ladir
commande.MSDN
Comme l'a souligné @GSerg, certains de vos fichiers ont un nom 8.3 correspondant.
Essayez de changer le modèle pour
Totals.csv*
faire correspondre tous les fichiers.la source