Wil*_*son 44 c# directory methods recursion file
我有一个方法将遍历文件夹及其所有子文件夹并获取文件路径列表.但是,我只能弄清楚如何创建它并将文件添加到公共列表,而不是如何返回列表.这是方法:
public List<String> files = new List<String>();
private void DirSearch(string sDir)
{
try
{
foreach (string f in Directory.GetFiles(sDir))
{
files.Add(f);
}
foreach (string d in Directory.GetDirectories(sDir))
{
DirSearch(d);
}
}
catch (System.Exception excpt)
{
MessageBox.Show(excpt.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我只是DirSearch()在我的代码中调用某个点并用路径"填充"列表,但我希望能够多次使用它来创建具有不同目录的不同列表等.
Til*_*lak 135
您可以使用Directory.GetFiles替换您的方法.
Directory.GetFiles(dirPath, "*", SearchOption.AllDirectories)
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 48
private List<String> DirSearch(string sDir)
{
List<String> files = new List<String>();
try
{
foreach (string f in Directory.GetFiles(sDir))
{
files.Add(f);
}
foreach (string d in Directory.GetDirectories(sDir))
{
files.AddRange(DirSearch(d));
}
}
catch (System.Exception excpt)
{
MessageBox.Show(excpt.Message);
}
return files;
}
Run Code Online (Sandbox Code Playgroud)
如果你不想在内存中加载整个列表并避免阻塞,你可以看一下following answer.
Tom*_*zzo 22
只需使用:
public static List<String> GetAllFiles(String directory)
{
return Directory.GetFiles(directory, "*.*", SearchOption.AllDirectories).ToList();
}
Run Code Online (Sandbox Code Playgroud)
如果你想要每个文件,甚至是无扩展文件:
public static List<String> GetAllFiles(String directory)
{
return Directory.GetFiles(directory, "*", SearchOption.AllDirectories).ToList();
}
Run Code Online (Sandbox Code Playgroud)
小智 13
你可以使用这样的东西:
string [] filePaths = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
Run Code Online (Sandbox Code Playgroud)
而不是使用" . "你可以输入文件的名称或只是类型"*.txt",SearchOption.AllDirectories是搜索所有子文件夹,你可以改变,如果你只想要一个更多的关于如何使用它在这里