我工作的一个项目,我需要列出一个目录,例如我怎么能列出所有的子目录中的C所有子目录:\如何列出所有子目录中的目录
49
A
回答
70
使用Directory.GetDirectories
获取“your_directory_path”指定的目录的子目录。结果是一串字符串。
var directories = Directory.GetDirectories("your_directory_path");
默认情况下,它只返回一级深度的子目录。有些选项可以递归地返回所有内容,并筛选结果,documented here,并显示在Clive的答案中。
避免了UnauthorizedAccessException
这无疑可能你会得到一个UnauthorizedAccessException
如果你打一个目录到你没有访问。
您可能需要创建自己的方法处理异常,就像这样:
public class CustomSearcher
{
public static List<string> GetDirectories(string path, string searchPattern = "*",
SearchOption searchOption = SearchOption.TopDirectoryOnly)
{
if (searchOption == SearchOption.TopDirectoryOnly)
return Directory.GetDirectories(path, searchPattern).ToList();
var directories = new List<string>(GetDirectories(path, searchPattern));
for (var i = 0; i < directories.Count; i++)
directories.AddRange(GetDirectories(directories[i], searchPattern));
return directories;
}
private static List<string> GetDirectories(string path, string searchPattern)
{
try
{
return Directory.GetDirectories(path, searchPattern).ToList();
}
catch (UnauthorizedAccessException)
{
return new List<string>();
}
}
}
然后调用它像这样:
var directories = CustomSearcher.GetDirectories("your_directory_path");
38
容易,因为这:
string[] folders = System.IO.Directory.GetDirectories(@"C:\My Sample Path\","*", System.IO.SearchOption.AllDirectories);
1
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TRIAL
{
public class Class1
{
static void Main(string[] args)
{
string[] fileArray = Directory.GetDirectories("YOUR PATH");
for (int i = 0; i < fileArray.Length; i++)
{
Console.WriteLine(fileArray[i]);
}
Console.ReadLine();
}
}
}
6
FolderBrowserDialog fbd = new FolderBrowserDialog();
DialogResult result = fbd.ShowDialog();
string[] files = Directory.GetFiles(fbd.SelectedPath);
string[] dirs = Directory.GetDirectories(fbd.SelectedPath);
foreach (string item2 in dirs)
{
FileInfo f = new FileInfo(item2);
listBox1.Items.Add(f.Name);
}
foreach (string item in files)
{
FileInfo f = new FileInfo(item);
listBox1.Items.Add(f.Name);
}
+0
如果你想在列表框中列出并授予用户选择哪个文件夹,是的,这个答案有效。 –
相关问题
- 1. 列出目录+子目录中的所有文件和目录
- 2. 列出VB.net中的所有子目录
- 3. C++列出中的所有目录和子目录(LINUX)
- 4. 列出目录中的文件和所有子目录
- 5. 列出目录和子目录中的所有jpg文件
- 6. 列出目录中的所有文件和子目录C#
- 7. 列出目录中的所有子目录和文件
- 8. 列出目录中的所有子目录和文件
- 9. 如何在php中列出目录及其子目录的所有文件?
- 10. 如何遍历目录和子目录中的所有文件
- 11. CMake:如何获取目录中所有子目录的名称?
- 12. 如何列出我的项目目录中的所有字体
- 13. 列出目录中的所有文件
- 14. 如何列出marklogic目录中所有文档的所有URI
- 15. 列出目录,忽略子目录ANT
- 16. 所有子目录中
- 17. 快速列出目录及其所有子目录中的文件
- 18. Perforce:列出当前目录中的所有文件,但不包含子目录
- 19. PHP:如何列出目录中的文件,而不列出子目录
- 20. 如何列出批处理文件中当前目录的所有父目录
- 21. 如何只列出指定目录的子目录?
- 22. 如何在查找目录后列出子目录的内容
- 23. Git:列出回购根目录下的所有目录
- 24. 列出当前目录的所有子目录的内容 - 解析ls与globbing
- 25. 列出具有路径的数组的目录和子目录;
- 26. 查找目录中的所有目录
- 27. 子目录中的Favicon所有子域
- 28. 列出影响github中的子目录的所有提交
- 29. 如何列出目录/子目录中没有路径名CMD的所有文件?
- 30. htaccess如何查询所有子目录
不会仍然会抛出一个UnauthorizedAccessException和*不*获取剩余的文件夹? –
@ J.Doe它递归地遍历目录及其所有子目录。如果它遇到了一个它无法访问的子目录,那么会抛出一个'UnauthorizedAccessException'的东西,它会捕获异常,并返回一个空的列表给那个不可访问的目录。然后它继续到下一个子目录。 –