2011-08-09 50 views
0

可能重複:
how to read all files inside particular folder如何讓我的C#代碼檢查目錄中的每個文件?

我有我想出了下面的代碼:

string[] lines = System.IO.File.ReadAllLines(@"C:\Notes\Variables1.txt"); 
foreach (string line in lines) 
{ 
    process(line); 
} 

string[] lines = System.IO.File.ReadAllLines(@"C:\Notes\test1.txt"); 
foreach (string line in lines) 
{ 
    process(line); 
} 

有一個簡單,可靠的方式,我可以修改代碼,以便它查找我的Notes目錄中的所有.txt文件,然後依次讀取每個文件。有些方法我可以對它進行編碼,而無需依次指定每個文件,並且在文件爲空時不會崩潰。

回答

0

迭代你可以得到的文件集合使用Directory.GetFiles()任何給定的目錄。然後就像你已經在做的那樣逐一處理它們。

string[] files = Directory.GetFiles(@"C:\Notes", "*.txt", SearchOption.TopDirectoryOnly); 
foreach(string file in files) 
{ 
    string[] lines = File.ReadAllLines(file); 
    foreach (string line in lines) 
    { 
     process(line); 
    }   
} 

System.IO命名空間中還有很多。

+0

感謝。順便問一下,我可以通過某種方式獲取文件名並將其放入字符串中? – Jason

+1

@Jason:它已經在'string file'中。如果你需要去掉擴展名,路徑等,你應該把這個字符串填入['FileInfo'](http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx)或者使用['Path'](http://msdn.microsoft.com/en-us/library/system.io.path_methods.aspx)類的靜態方法。 – Oliver

4
string[] files = Directory.GetFiles(source, "*.txt"); 
foreach(string filename in files) 
{ 
    //go do something with the file 
} 
0
string[] files = Directory.GetFiles(directory); 
foreach(string filename in files) 
{ 
    if (Path.GetExtension(filename) != ".txt") 
     continue; 

    string[] lines = System.IO.File.ReadAllLines(filename); 
    foreach (string line in lines) 
    { 
     process(line); 
    } 
} 
0

使用System.IO.Directory.ReadFiles

例如:

string[] filePaths = Directory.GetFiles(@"c:\Notes\", "*.txt") 

然後只需通過文件路徑

0

你想:

Directory.GetFiles(path, "*.txt"); 

這將返回名稱的數組,所以你可以遍歷依次在每個文件:

foreach (string file in Directory.GetFiles(path, "*.txt")) 
{ 
    string[] lines = System.IO.File.ReadAllLines(file); 
    foreach (string line in lines) 
    { 
     process(line); 
    } 
} 
相關問題