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. Dropbox中的所有文件夾和文件夾的列表
- 2. 獲取所有Outlook文件夾和子文件夾的列表
- 3. 列表而不extention的文件夾和子文件夾中的所有文件
- 4. VBSCRIPT列表文件夾中的所有PDF文件和子文件夾
- 5. 文件列表文件夾和所有孫子的子目錄
- 6. 列出具有指定深度的文件夾的所有子目錄
- 7. 列表中的文件夾中的所有文件,並分文件夾
- 8. PHP - 所有文件和文件夾指定的文件夾
- 9. DeploymentItem-Attribut文件夾中的所有文件和文件夾
- 10. powershell複製文件夾中的所有文件夾和文件
- 11. 獲取文件夾內所有文件夾和圖像的列表
- 12. 宏以列出文件夾和子文件夾中的所有工作表
- 13. 獲取文件夾及其子文件夾中所有文件的列表
- 14. 更改文件夾,所有子文件夾和所有文件的權限
- 15. C - 列出文件夾和所有子文件夾中包含的文件
- 16. 列出excel中文件夾和子文件夾中的所有文件
- 17. 列出所有文件夾中的所有文件在一個列表中
- 18. 閱讀從文件夾的子文件夾和所有組件
- 19. 使用Dropbox API列出Dropbox的所有文件夾和文件
- 20. 列出所有文件和文件夾的大小爲
- 21. 刪除文件夾和所有子文件夾(包括文件夾)中的所有文件
- 22. MVC4列出文件夾中的所有子文件夾
- 23. 我如何得到沒有文件的文件夾和子文件夾列表
- 24. 獲取目錄中的所有文件夾和子文件夾
- 25. 刪除除X以外的所有文件夾最近的文件夾
- 26. 列出X日期的所有文件
- 27. 更改該文件夾內的文件夾和文件的所有者
- 28. 從Google Drive獲取所有文件(和父文件夾)的列表
- 29. Alfresco webscript獲取所有文件和文件夾的大小列表
- 30. Python腳本搜索文件夾,並給所有的文件夾列表和文件
那麼你必須清理調用者中的文件夾/文件... – 2011-05-26 16:53:18
而'上方'並不是一個很好的參考機制。查看排序標籤。 – 2011-05-26 16:54:14
就排序而言,這很容易添加,或帶回多個列表,問題說的是文件夾和文件列表......所以我這樣寫了。就上述參考而言,你是對的,匆忙而沒有想到它,將會進行編輯 – pstrjds 2011-05-26 16:59:52