Ich möchte Filter, welche Dateien von der Directory.GetFiles() -Funktion zurückgegeben werden. Die Dateien im Verzeichnis sind alle Textdateien, die mit sechsstelligen Zahlen in inkrementeller Reihenfolge benannt sind (zB: "200501.txt", "200502.txt", "200503.txt", usw.), ich möchte a eingeben "Rechnungsnummer starten" und "Rechnungsnummer beenden" über 2 Textfeldsteuerelemente, um nur die Dateien innerhalb dieses Bereichs zurückzugeben.Wie filtere ich Directory.GetFiles() um einen numerischen Bereich, wenn Dateinamen in numerischer Reihenfolge aufgeführt sind?
Der aktuelle Code ist wie folgt ...
using (var fbd = new FolderBrowserDialog())
{
DialogResult result = fbd.ShowDialog();
if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
{
string[] fileDir = Directory.GetFiles(fbd.SelectedPath);
string[] files = fileDir;
foreach (string loopfile in files)
{
int counter = 0;
string line;
//Gets invoice number from text file name
//This strips all unnecessary strings out of the directory and file name
//need to change substring 32 to depending directory using
string loopfileName = loopfile.Substring(32);
string InvoiceNumberLong = Path.GetFileName(loopfile);
string InvoiceNumber = InvoiceNumberLong.Substring(0,(InvoiceNumberLong.Length - 4)).ToString();
var controlCount = new List<string>();
var EndCount = new List<string>();
//Read through text file line by line to find all instances of "control" and "------" string
//adds all line position of these strings to lists
System.IO.StreamReader file = new System.IO.StreamReader(loopfile);
while ((line = file.ReadLine()) != null)
{
if (line.Contains("Control"))
{
controlCount.Add(counter.ToString());
}
if (line.Contains("------"))
{
EndCount.Add(counter.ToString());
}
counter++;
}
}
}
}
Vielen Dank im Voraus!
Verwenden Sie auch 'EnumerateFiles' anstelle von' GetFiles'. – mjwills
Ja, Sie haben Recht, 'EnumerateFiles' ist besser die Antwort geändert, um dies widerzuspiegeln –
Danke, ich werde dies untersuchen und es jetzt versuchen! – MegaByteMe