给定目录中的缓冲区文件名

时间:2012-04-27 15:52:11

标签: c# file-io bufferedreader

我正在尝试从C#中的给定目录中找到一种缓冲FileNames的方法。我的意思是:

给定目录

  

C:/ MYDIR

其中包含文件:

  

File1_orig.txt

     

File1_edited.txt

     

File2_orig.txt

     

File2_edited.txt

     

...

     

Filen_orig.txt

     

Filen_edited.txt

我想将文件名(不是整个文件路径,只是文件名,例如String [] filename = Filen_orig.txt)存储到临时字符串中,并对它们进行简单比较,看它们是否包含目标字符串。

我想将字符串传递给:

while(STILL FILES IN DIRECTORY)
{
    string[] exFileName = {BUFFER FILENAME HERE}
    string[] words = exFileName.Split('_');
    string[] toCompare = "edited";
            bool result;
            foreach (string word in words)
            {
                Console.WriteLine(word);
                bool result = toCompare.Equals(word, StringComparison.OrdinalIgnoreCase);
                if (result)
                {
                    Console.WriteLine("success");
                }
            }
            Console.ReadLine();

检查正在检查的文件是否已编辑(* _edited.txt)或原始文件(* _original.txt),如果编辑了该文件,则进一步处理该文件。

有谁知道如何自动读取文件路径?

非常感谢。

2 个答案:

答案 0 :(得分:1)

DirectoryInfo.GetFiles怎么样?

DirectoryInfo di = new DirectoryInfo(@"c:\");

// Get only subdirectories that contain the letter "p."
FileInfo[] files= di.GetFiles("*.txt");

foreach (FileInfo fi in files) 
{
   string exFileName = fi.FileName;
  ...
}

答案 1 :(得分:1)

如果您想查看是否有任何文件包含_edited位,您可以使用:

bool success = Directory.GetFiles(@"c:\MyDir").Any(p => p.Contains("_edited"));

我有点猜测这是你想要的,因为你的代码不是很清楚(也不是你的描述)

编辑:显示所有已编辑的文件:

            foreach(var file in Directory.GetFiles(@"c:\MyDir").Where(p => p.Contains("_edited")))
        {
            Console.WriteLine(" {0}: edited", file);
        }

此外,必须使用“System.Linq”