加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何遍历目录并仅使用C#通过Web方法返回文件夹名称?

发布时间:2020-12-15 07:50:40 所属栏目:百科 来源:网络整理
导读:这个问题已经在这里有了答案:????????????????????????how to list all sub directories in a directory????????????????????????????????????5个 我正在尝试使用C#读取目录并返回该目录中的所有文件夹名称.我不希望返回任何嵌套的文件夹或文件,而只返回目

这个问题已经在这里有了答案:????????????>????????????how to list all sub directories in a directory????????????????????????????????????5个
我正在尝试使用C#读取目录并返回该目录中的所有文件夹名称.我不希望返回任何嵌套的文件夹或文件,而只返回目录中的直接文件夹.

我将使用这些名称在应用程序中构建侧面导航.用户将具有创建新文件夹的能力,因此我希望随着时间的推移创建新文件夹时可以动态构建导航.到目前为止,我已经尝试了不同的解决方案.

1-我使用Directory.GetFiles()并遍历目录,但这返回了在整个目录中找到的每个文件夹和文件名.

第二-我使用Directory.GetDirectory()并尝试遍历目录,这确实只返回文件夹名称,但仅返回第一个文件夹!我需要其余的文件夹.就像我的循环无法正常工作.

第一次尝试:

 string [] files = Directory.GetFiles(@"\SERVERNAMEDataServerLinksSafety","*",SearchOption.AllDirectories); 
    string File = "";
    for (int ii = 0; ii < files.Length; ii++)
    {
        File += "|" + files[ii];
    }
    return (File);

第二次尝试:

string path = @"\SERVERNAMEDataServerLinksSafety";
    foreach (string folder in Directory.GetDirectories(path))
    {
        string name = folder.Remove(0,folder.LastIndexOf('') + 1);
        return (name);            
    }
    return ("");
最佳答案
您的第二次尝试方向正确.您只返回第一个文件夹.相反,您应该存储所有文件夹并返回集合.或者只是做一个yield return以IEnumerable的形式返回

var allFolders = new List<string>();
string path = @"SERVERNAMEDataServerLinksSafety";
foreach (string folder in Directory.GetDirectories(path)) {
    string name = folder.Remove(0,folder.LastIndexOf('') + 1);
    allFolders.Add(name)
}
return allFolders;

如果我是你,我会使用略有不同的代码,该代码更加健壮和惯用

new DirectoryInfo(path).GetDirectories().Select(d => d.Name);

您可以使用新的DirectoryInfo(path).GetDirectories()将信息保留为Directory对象,而不是使用Directory类,然后使用字符串函数进行路径操作.我刚刚对DirectoryInfo.Name进行了选择,因为这就是您的代码所显示的内容,但是您可以通过这种方式使用更强大的DirectoryInfo对象

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读