2012-05-16 103 views
1

這段代碼從1.txt中取出一行並將其拆分爲多列。現在我有一個以結尾something.txt爲結尾的200個文件的目錄,並且我希望它們全部一次打開一個,並且此過程在下面運行。循環播放所有文件的最簡單方法是什麼,而不用更改我的代碼太多?如何循環遍歷目錄中的所有文本文件C#

目前代碼片段;

string _nextLine; 
    string[] _columns; 
    char[] delimiters; 


    delimiters = "|".ToCharArray(); 


    _nextLine = _reader.ReadLine(); 

    string[] lines = File.ReadAllLines("C:\\P\\DataSource2_W\\TextFiles\\Batch1\\1.txt"); 


    //Start at index 2 - and keep looping until index Length - 2 
    for (int i = 3; i < lines.Length - 2; i++) 
    {  _columns = lines[i].Split('|');  

     // Check if number of cols is 3 
    if (_columns.Length == 146) 
    { 

     JazzORBuffer.AddRow(); 
     JazzORBuffer.Server = _columns[0]; 
     JazzORBuffer.Country = _columns[1]; 
     JazzORBuffer.QuoteNumber = _columns[2]; 
     JazzORBuffer.DocumentName =_columns[3]; 
     JazzORBuffer.CompanyNameSoldTo=_columns[4]; 


    } 

     else 
{ 
    // Debug or messagebox the line that fails 
    MessageBox.Show("Cols:" + _columns.Length.ToString() + " Line: " + lines[i]); 
    return; 

} 


    } 

回答

13

您可以簡單地使用Directory.EnumerateFiles()迭代指定目錄的文件聚集。

所以,你可以插入你的代碼foreach循環裏面,如:

foreach (var file in 
    Directory.EnumerateFiles(@"C:\\P\\DataSource2_W\\TextFiles\\Batch1", "*.txt")) 
{ 

    //your code 
} 
+0

只好改成這樣,由於微軟的bug。 (在Directory.GetFiles中的var文件(@「C:\\ P \\ DataSource2_W \\ TextFiles \\ Batch1 \\」,「* .txt」)) { –

+0

}感謝您的回覆。這是令人欣慰的。 –

+0

@JamesKhan:不客氣 – Tigran

相關問題