如何获取进程的特定目录

时间:2012-05-24 08:57:21

标签: c#

我有一个包含许多子目录的目录。例如:

Emp1
 Acc
 profile
   pro1.xml
   pro2.xml
 data
Emp2
 Acc
 profile
   pro1.xml
   pro2.xml
 data
Emp3
 Acc
 profile
   pro1.xml
   pro2.xml
 data

我想写一个foreach循环,所以我只获得驻留在profile文件夹中的文件。例如:

 foreach string filename in directory.getdirectories(filepat){
        //code.
  }

有人可以帮我创建一个搜索模式来执行此操作吗?

4 个答案:

答案 0 :(得分:1)

编辑问题后编辑....

var directoryInfo = new DirectoryInfo(@"c:\temp\stackoverflow");
foreach (var element in dinfo.GetDirectories(@"profile", SearchOption.AllDirectories).SelectMany(x => x.GetFiles()))
{
    Console.WriteLine (element);
}

喜欢这个吗?

答案 1 :(得分:1)

我为文件和目录编写了一些流畅的扩展,让你可以很好地使用linq,看看这里:http://blog.staticvoid.co.nz/2011/11/staticvoid-io-extentions-nuget.html

或使用Install-Package StaticVoid.Core.IO

从nuget下载
diretory.Directories().SelectMany(d => 
   d.Directory(di => di.Name == "Acc")
       .Directory(di => di.Name == "profile").Files());

答案 2 :(得分:0)

这可能是你想要的......

 string [] dirname = Directory.GetDirectories(path){
                 foreach( string s in dirname)
                 {
                   if(s.Contains("profile"))
                   {
                     //do your work
                   }
                 }

答案 3 :(得分:0)

也许您可以尝试以下内容:

 IEnumerable<string> directories = Directory.GetDirectories("PATH", "*.*", SearchOption.AllDirectories).Where(d => d == "ProfileFolder");
 foreach (string directory in directories)
 {
     string[] files = Directory.GetFiles(directory, "*.*", SearchOption.TopDirectoryOnly);
 }