如何让我的C#代码检查目录中的每个文件?

时间:2011-08-09 13:19:13

标签: c# .net

  

可能重复:
  how to read all files inside particular folder

我提出了以下代码:

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文件,然后依次读取每个文件。有些方法我可以编写代码,而不必依次指定每个文件,如果文件为空则不会崩溃。

6 个答案:

答案 0 :(得分:4)

string[] files = Directory.GetFiles(source, "*.txt");
foreach(string filename in files) 
{
   //go do something with the file
}

答案 1 :(得分:2)

使用DirectoryInfo类获取所有文件的列表。

是否有一个重载EnumerateFiles方法,仅此而已。

答案 2 :(得分: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);
   }
}

答案 3 :(得分:0)

使用System.IO.Directory.ReadFiles

例如:

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

然后简单地遍历文件路径

答案 4 :(得分: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命名空间中还有更多内容。

答案 5 :(得分: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);
    }
}