Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何输出目录层次结构中的每个文件和文件夹_C#_File_Getfiles_Getdirectories - Fatal编程技术网

C# 如何输出目录层次结构中的每个文件和文件夹

C# 如何输出目录层次结构中的每个文件和文件夹,c#,file,getfiles,getdirectories,C#,File,Getfiles,Getdirectories,我正在寻找一种方法来访问所有文件和文件夹以及这些文件夹中的文件 举个例子 如果我有 - Root + file1 + file2 -- Directory -+ file1 -+ file2 ---Directory --+ file1 --+ file2 我希望能够在程序中输出这些文件中的每一个,以便: root/file1 root/file2 root/Directory/file1 root/Directory/file2 root/Directory/Directory/file1

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

举个例子

如果我有

- 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
与文件夹层次结构匹配

有什么办法可以这样做吗


谢谢

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

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

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

 public void PrintAllFiles()
    {
        DirectoryInfo obj = new DirectoryInfo("E:\\");
        foreach (var k in obj.GetFiles())
        {
            Console.WriteLine(k.FullName);
        }
    }

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

 public void PrintAllFiles()
    {
        DirectoryInfo obj = new DirectoryInfo("E:\\");
        foreach (var k in obj.GetFiles())
        {
            Console.WriteLine(k.FullName);
        }
    }

以下示例正是您想要的:-


以下示例正是您想要的:-


使用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));

如果您标记了一个额外的
。请在语句末尾选择(f=>f.Replate(@“\”,“/”)
,您可以使用/作为路径分隔符,而不是使用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));

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

您需要将根目录路径传递到静态
FileHelper
类中,它将为您提供该目录中所有文件和文件夹的列表,您可以枚举它们并以任何方式使用它们。枚举也在主me中完成方法。如果您有任何疑问,请告诉我。您需要将根目录路径传递到那里的静态
FileHelper
类中,它将为您提供该目录中所有文件和文件夹的列表,您可以枚举这些文件和文件夹并以任何方式使用它们。在main方法中也会进行枚举。如果您有任何疑问,请告诉我。