Ich habe einen Code, der dazu gedacht ist, Dateien in einem Verzeichnis abzurufen, was einfach genug ist
foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv", SearchOption.TopDirectoryOnly))
Die Dateien heißen wie folgt:
Totals.CSV142344
Totals.CSV142409
Totals.CSV142433
Totals.CSV142501
Totals.CSV142528
Mein Problem ist, dass es nicht die letzte Datei aufnimmt.
Ich habe den Code korrigiert, indem ich stattdessen Folgendes eingefügt habe:
foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv*", SearchOption.TopDirectoryOnly))
Wenn Sie sagen, erhalten Sie alle Dateien, die sowohl Summen als auch .csv enthalten, mit allem nach der .csv.
Was ich nicht verstehe, ist, warum es die oberen vier Dateien hat, aber nicht die unteren.
Ich hätte gedacht, dass keine der Dateien vom Originalcode erfasst wird?
Totals~n.csv
, passen sie nicht mehr und Sie können nur eine Übereinstimmung findenTotal*
. Geben Sie eindir /x tot*.*
, um Kurznamen anzuzeigen. Sie bevorzugenTotals.csv*
und müssen möglicherweise filtern, um versehentliche Übereinstimmungen zu vermeiden.Antworten:
Anscheinend wird
GetFiles
die Mustervergleichslogik eingehalten, wie sie beispielsweise imdir
Befehl implementiert ist .MSDN
Wie @GSerg zeigte, haben einige Ihrer Dateien einen passenden 8.3-Namen.
Versuchen Sie, das Muster so zu ändern, dass
Totals.csv*
es mit allen Dateien übereinstimmt.quelle