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

发布于 2024-12-01 04:26:59 字数 416 浏览 0 评论 0原文

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

举个例子。

如果我有的话,

- 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

与文件夹层次结构匹配。

有办法做到这一点吗?

谢谢

I'm looking for a way to all files and folders and files in those folders.

As an example.

if I have

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

I would like to be able to output each one of those files in the program so it would be like:

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

As matching to the folder hierarchy.

Is there anyway to do this?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

柏林苍穹下 2024-12-08 04:26:59

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

http://www.dotnetperls.com/recursively-find -文件

The following example does exactly what you want:-

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

月下凄凉 2024-12-08 04:26:59

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

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

use DirectoryInfo class,FileInfo classes inside your System.IO to get these details.

 public void PrintAllFiles()
    {
        DirectoryInfo obj = new DirectoryInfo("E:\\");
        foreach (var k in obj.GetFiles())
        {
            Console.WriteLine(k.FullName);
        }
    }
八巷 2024-12-08 04:26:59

使用 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(@"\","/")) 在语句末尾,您可以使用 / 作为路径分隔符而不是 \

Using Linq for some of the lifting

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

miss out the substring to get the full path. Or if you just want the folder name of the root object (eg if you did c:\users\bob\fish as the directory and you just wanted fish\foldername you would do the following..

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

if you tag an extra .Select(f=>f.Replate(@"\","/")) on the end of the statement you can use / as the path seperator instead of \

风情万种。 2024-12-08 04:26:59

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

you could use System.IO.Directory.GetFiles(..,..,System.IO.SearchOption.AllDirectories) which returns an array of files and full path names and then print that array. if you need sorting you could recursively loop through directories and use System.IO.Directory.GetFiles(..,..,System.IO.SearchOption.TopDirectoryOnly) on each directory instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文