2
A
回答
4
該代碼會做什麼其他的答案都在做,但也返回文件夾名稱(因爲這似乎是你所要求的一部分)。這將需要.Net 4.0。如果你想跟蹤哪些是文件夾,哪些是文件,你可以返回一個包含文件列表和文件夾列表的元組。
List<string> GetFilesAndFolders(string root, int depth)
{
var list = new List<string>();
foreach(var directory in Directory.EnumerateDirectories(root))
{
list.Add(directory);
if (depth > 0)
{
list.AddRange(GetFilesAndFolders(directory, depth-1));
}
}
list.AddRange(Directory.EnumerateFiles(root));
return list;
}
編輯:代碼,保持文件夾和文件分開
Tuple<List<string>,List<string>> GetFilesAndFolders(string root, int depth)
{
var folders = new List<string>();
var files = new List<string>();
foreach(var directory in Directory.EnumerateDirectories(root))
{
folders.Add(directory);
if (depth > 0)
{
var result = GetFilesAndFolders(directory, depth-1);
folders.AddRange(result.Item1);
files.AddRange(result.Item2);
}
}
files.AddRange(Directory.EnumerateFiles(root));
return new Tuple<List<string>,List<string>>(folders, files);
}
2
我感覺好像之前已經解決了。基本上你想要做的是詢問當前的文件,如果它是一個目錄,如果爲真,並且x還沒有最大化,但抓取該文件的子目錄。此外,您需要檢查該目錄中是否存在文件並檢索它們。
2
好的,這是一個簡單的解決方案。
private static IList<string> GetFilesToDepth(string path, int depth)
{
var files = Directory.EnumerateFiles(path).ToList();
if (depth > 0)
{
var folders = Directory.EnumerateDirectories(path);
foreach (var folder in folders)
{
files.AddRange(GetFiles(folder, depth - 1));
}
}
return files;
}
這可能是有吸引力的,以改變這種爲EnumFilesToDepth()
,即擺脫ToList的()。這需要更多的思考和工作,但遞歸迭代器很棘手。
2
如果你只是想要文件名,你可以用遞歸方法做到這一點。類似的東西: (無garantee總正確性,我寫不編譯)
public static List<String> GetSubfoldersAndFiles(DirectoryInfo di, int deep)
{
List<string> myContent = new List<string>();
foreach(FileInfo fi in di.GetFiles())
{
myContent.Add(fi.FullName);
}
if(deep > 0)
{
foreach(DirectoryInfo subDi in di.GetDirectories())
{
myContent.AddRange(GetSubfoldersAndFiles(subDi, deep - 1).ToArray());
}
}
return myContent;
}
和調用將是這樣的:
List<string> content = GetSubfoldersAndFiles(new DirectoryInfo(@"c:\", 3));
1
所有子文件夾
public List<string> listDir(string pPath)
{
List<string> dirList = new List<string>();
listDir(pPath, dirList);
return dirList;
}
private void listDir(string pPath, List<string> pList)
{
string[] loDirs = System.IO.Directory.GetDirectories(pPath);
foreach (string loDir in loDirs)
{
pList.Add(loDir);
listDir(loDir, pList);
}
}
相關問題
- 1. 列表而不extention的文件夾和子文件夾中的所有文件
- 2. VBSCRIPT列表文件夾中的所有PDF文件和子文件夾
- 3. 文件列表文件夾和所有孫子的子目錄
- 4. 列出具有指定深度的文件夾的所有子目錄
- 5. DeploymentItem-Attribut文件夾中的所有文件和文件夾
- 6. powershell複製文件夾中的所有文件夾和文件
- 7. 宏以列出文件夾和子文件夾中的所有工作表
- 8. C - 列出文件夾和所有子文件夾中包含的文件
- 9. 列出所有文件夾中的所有文件在一個列表中
- 10. 列出所有文件和文件夾的大小爲
- 11. 使用Dropbox API列出Dropbox的所有文件夾和文件
- 12. 刪除文件夾和所有子文件夾(包括文件夾)中的所有文件
- 13. Alfresco webscript獲取所有文件和文件夾的大小列表
- 14. 從Google Drive獲取所有文件(和父文件夾)的列表
- 15. 列出文本文件中的所有文件夾名稱
- 16. 刪除除了一個文件夾中的所有文件夾/文件和所有根文件
- 17. Python - 文件夾中所有文件的平均長度函數
- 18. bash腳本 - 刪除文件夾超過X天的除了一些和所有及其子文件夾/文件
- 19. 以遞歸方式打印文件夾中的所有文件和文件夾
- 20. Powershell v1 - 刪除指定文件夾以外的所有文件和文件夾
- 21. 如何掃描文件夾和子文件夾中的所有文件?
- 22. 複製沒有文件的文件夾,沒有文件夾的文件或使用PowerShell的所有文件
- 23. 在文件夾和所有子文件夾中的所有文字文件上操作任務VBA
- 24. 如何在.NET中複製文件夾和所有子文件夾和文件?
- 25. 無論文件夾的結構和深度如何,參考文件
- 26. Bash在最小深度的子文件夾中查找文件夾
- 27. 獲取參數和文件夾深度的路徑
- 28. 獲取陣列中所有文件/文件夾的名稱
- 29. 如何更改文件夾中所有excel文件的一列
- 30. 列出Google Drive SDK中的所有文件夾及其文件
那麼你必須清理調用者中的文件夾/文件... – 2011-05-26 16:53:18
而'上方'並不是一個很好的參考機制。查看排序標籤。 – 2011-05-26 16:54:14
就排序而言,這很容易添加,或帶回多個列表,問題說的是文件夾和文件列表......所以我這樣寫了。就上述參考而言,你是對的,匆忙而沒有想到它,將會進行編輯 – pstrjds 2011-05-26 16:59:52