1
Directory.GetFiles()関数から返されるファイルをフィルタしたい。ディレクトリ内のファイルはすべて、6桁の数字の付いたすべてのテキストファイルです(例: "200501.txt"、 "200502.txt"、 "200503.txt"など)。 "Invoice Number"と "Ending Invoice Number"の2つのテキストボックスコントロールを使用して、その範囲内のファイルのみを返すことができます。次のようにファイル名が数字順にリストされている場合、Directory.GetFiles()を数値範囲でフィルタリングするにはどうすればよいですか?
現在のコードがある...
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++;
}
}
}
}
は、事前にありがとうございます!
また、 'GetFiles'ではなく' EnumerateFiles'を使うことを検討してください。 – mjwills
はい、あなたは正しいです、EnumerateFilesはこれを反映するために答えをより良く変更しました –
ありがとう私はこれを調べ、今試してみましょう! – MegaByteMe