我正在寻找一种方法来处理这些文件夹中的所有文件和文件夹。
作为一个例子。
如果我有
- 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
与文件夹层次结构匹配。
有没有这样做?
由于
答案 0 :(得分:2)
以下示例完全符合您的要求: -
答案 1 :(得分:1)
使用System.fo类,System.IO中的FileInfo类来获取这些详细信息。
public void PrintAllFiles()
{
DirectoryInfo obj = new DirectoryInfo("E:\\");
foreach (var k in obj.GetFiles())
{
Console.WriteLine(k.FullName);
}
}
答案 2 :(得分: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(@"\","/"))
,则可以使用/作为路径分隔符而不是\
答案 3 :(得分:0)
您可以使用System.IO.Directory.GetFiles(..,..,System.IO.SearchOption.AllDirectories),它返回文件数组和完整路径名,然后打印该数组。如果你需要排序,你可以递归遍历目录并在每个目录上使用System.IO.Directory.GetFiles(..,..,System.IO.SearchOption.TopDirectoryOnly)。