递归列出给定路径下的所有文件和文件夹? [复制]
Posted
技术标签:
【中文标题】递归列出给定路径下的所有文件和文件夹? [复制]【英文标题】:list recursively all files and folders under the given path? [duplicate] 【发布时间】:2011-04-12 06:09:15 【问题描述】:可能重复:How to recursively list all the files in a directory in C#?
我想列出给定文件夹(路径)的文件和文件夹的“子路径”
假设我有文件夹 C:\files\folder1\subfolder1\file.txt
如果我给函数 c:\files\folder1\
我会得到 子文件夹1 子文件夹1\file.txt
【问题讨论】:
您已经检查过 FileInfo 和 DirectoryInfo 可用的 API?使用这些类实现您想要的行为非常简单...... 【参考方案1】:您可以使用Directory.GetFiles
方法列出文件夹中的所有文件:
string[] files = Directory.GetFiles(@"c:\files\folder1\",
"*.*",
SearchOption.AllDirectories);
foreach (var file in files)
Console.WriteLine(file);
请注意,SearchOption
参数可用于控制搜索是递归的 (SearchOption.AllDirectories
) 还是非递归的 (SearchOption.TopDirectoryOnly
)。
【讨论】:
此解决方案不包括返回列表中的文件夹。 @galmok:使用Directory.GetFileSystemEntries(...)
代替Directory.GetFiles(...)
和"*"
代替"*.*"
。【参考方案2】:
试试这样的:
static void Main(string[] args)
DirSearch(@"c:\temp");
Console.ReadKey();
static void DirSearch(string dir)
try
foreach (string f in Directory.GetFiles(dir))
Console.WriteLine(f);
foreach (string d in Directory.GetDirectories(dir))
Console.WriteLine(d);
DirSearch(d);
catch (System.Exception ex)
Console.WriteLine(ex.Message);
【讨论】:
【参考方案3】:String[] subDirectories;
String[] subFiles;
subDirectories = System.IO.Directory.GetDirectories("your path here");
subFiles = System.IO.Directory.GetFiles("your path here");
【讨论】:
真的很简单,而且很震撼。但是只获取名称 - foreach (String str in subDirectories) Console.WriteLine(str.Split('\\').Last()); foreach (String str in subFiles) Console.WriteLine(str.Split('\\').Last());【参考方案4】:使用System.IO.Directory
类和its methods
【讨论】:
【参考方案5】:我记得不久前在 SO 上解决了一个类似的问题,尽管它是在 VB 中。这是question。
【讨论】:
以上是关于递归列出给定路径下的所有文件和文件夹? [复制]的主要内容,如果未能解决你的问题,请参考以下文章