1

我正在寻找一种方法来处理所有文件和文件夹以及这些文件夹中的文件。

举个例子。

如果我有

- Root
+ file1
+ file2
-- Directory
-+ file1
-+ file2
---Directory
--+ file1
--+ file2

我希望能够在程序中输出这些文件中的每一个,所以它就像:

root/file1
root/file2
root/Directory/file1
root/Directory/file2
root/Directory/Directory/file1
root/Directory/Directory/file2

与文件夹层次结构匹配。

有没有办法做到这一点?

谢谢

4

4 回答 4

2

以下示例完全符合您的要求:-

http://www.dotnetperls.com/recursively-find-files

于 2011-08-24T11:27:30.220 回答
1

使用 System.IO 中的 DirectoryInfo 类、FileInfo 类来获取这些详细信息。

 public void PrintAllFiles()
    {
        DirectoryInfo obj = new DirectoryInfo("E:\\");
        foreach (var k in obj.GetFiles())
        {
            Console.WriteLine(k.FullName);
        }
    }
于 2011-08-24T11:23:19.517 回答
1

使用 Linq 进行一些提升

var di=new DirectoryInfo(folderPath);
var files=di.GetFiles("*",SearchOption.AllDirectories).Select(f=>f.FullName.Substring(di.FullName.Length+1));

错过子字符串以获取完整路径。或者,如果您只想要根对象的文件夹名称(例如,如果您将 c:\users\bob\fish 作为目录并且您只想要 fish\foldername,您可以执行以下操作。

var di=new DirectoryInfo(folderPath);
var basePath=Path.GetDirectoryName(folderPath);
var files=di.GetFiles("*",SearchOptions.AllDirectorys).Select(f=>f.FullName.Substring(basePth.Length+1));

如果您.Select(f=>f.Replate(@"\","/"))在语句末尾标记一个额外的内容,您可以使用 / 作为路径分隔符而不是 \

于 2011-08-24T11:28:00.040 回答
0

您可以使用 System.IO.Directory.GetFiles(..,..,System.IO.SearchOption.AllDirectories) 返回一个文件数组和完整路径名,然后打印该数组。如果您需要排序,您可以递归地遍历目录并在每个目录上使用 System.IO.Directory.GetFiles(..,..,System.IO.SearchOption.TopDirectoryOnly) 。

于 2011-08-24T11:22:46.397 回答