我工作的一個項目,我需要列出一個目錄,例如我怎麼能列出所有的子目錄中的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. 列出目錄和子目錄中的所有jpg文件
- 2. C++列出中的所有目錄和子目錄(LINUX)
- 3. 列出目錄中的所有文件和子目錄C#
- 4. 列出目錄中的文件和所有子目錄
- 5. 如何在php中列出目錄及其子目錄的所有文件?
- 6. 如何列出我的項目目錄中的所有字體
- 7. 列出目錄中的所有文件
- 8. 如何列出marklogic目錄中所有文檔的所有URI
- 9. 列出目錄,忽略子目錄ANT
- 10. Perforce:列出當前目錄中的所有文件,但不包含子目錄
- 11. 如何列出批處理文件中當前目錄的所有父目錄
- 12. 如何在查找目錄後列出子目錄的內容
- 13. 列出當前目錄的所有子目錄的內容 - 解析ls與globbing
- 14. 查找目錄中的所有目錄
- 15. 子目錄中的Favicon所有子域
- 16. 列出影響github中的子目錄的所有提交
- 17. htaccess如何查詢所有子目錄
- 18. 列出目錄和子目錄中的MP3文件在PHP中
- 19. 如何獲取bash中的目錄及其所有子目錄中的文件?
- 20. 在Linux中列出所有的葉子目錄
- 21. 獲得從目錄中的所有文件和所有子目錄除了一個子目錄
- 22. 禁用eslint目錄和子目錄中的所有文件
- 23. Golang:解析目錄和子目錄中的所有模板?
- 24. 刪除目錄和所有子目錄中的特定文件
- 25. ANT:如何在子目錄中調用所有build.xml的目標?
- 26. 如何使用字符串列出所有子目錄,但不包含匹配的子目錄
- 27. 允許從rails「public /」的子目錄中列出Apache目錄?
- 28. 如何列出目錄中的所有文件Silverlight
- 29. 如何列出目錄中的所有文件
- 30. 如何使用Perl列出目錄中的所有文件?
不會仍然會拋出一個UnauthorizedAccessException和*不*獲取剩餘的文件夾? –
@ J.Doe它遞歸地遍歷目錄及其所有子目錄。如果它遇到了一個它無法訪問的子目錄,那麼會拋出一個'UnauthorizedAccessException'的東西,它會捕獲異常,並返回一個空的列表給那個不可訪問的目錄。然後它繼續到下一個子目錄。 –