【问题标题】:Find all directories in directory and return only name查找目录中的所有目录并仅返回名称
【发布时间】:2013-07-08 05:40:54
【问题描述】:

我想在 vb.net 的一个目录中查找所有目录。

我找到了一个脚本:

For Each Dir As String In Directory.GetDirectories(FolderName)
    ComboBox3.Items.Add(Dir)
Next

它返回路径的全名,但我希望它只返回路径的名称。

【问题讨论】:

    标签: vb.net directory .net


    【解决方案1】:

    最简单的方法是使用System.IO.DirectoryInfo

        For Each Dir As String In System.IO.Directory.GetDirectories(FolderName)
            Dim dirInfo As New System.IO.DirectoryInfo(Dir)
            ComboBox3.Items.Add(dirInfo.Name)
        Next
    

    (显然,您可以手动解析它并提取最后一个'\'之后的文本,但我相信上面的内容更具可读性)

    【讨论】:

    • 如果对你有用请mark the answer as correct点赞
    • 投票需要 15 声望
    • @ad48 您仍然可以接受答案;它使网站保持正常运行,并有助于避免被列为“未回答”的大量问题。
    • 每次都实例化一个新的 System.IO.DirectoryInfo() 似乎有点过头了。这是一个昂贵的操作,即使你已经在字符串中拥有了所有你需要的信息......
    • @LynnCrumbling 过分了,你说得对。正如我在答案中所说,这只是为了便于阅读。
    【解决方案2】:

    我认为最简单的方法是使用String.Replace 从目录全名的开头删除FolderName

    For Each Dir As String In System.IO.Directory.GetDirectories(FolderName)
        ComboBox3.Items.Add(Dir.Replace(FolderName, String.Empty))
    Next
    

    【讨论】:

    • 工作,但第一个字符是 \
    【解决方案3】:

    使用它只获取目录名称:

    dirName = IO.Path.GetDirectoryName(fullPath)
    

    【讨论】:

      【解决方案4】:

      试试这个

          For Each d As String In IO.Directory.GetDirectories(FolderName)
              'IO.Path.GetFileName
              'The characters after the last directory character in path.
              ComboBox3.Items.Add(IO.Path.GetFileName(d))
          Next
      

      这利用了您拥有目录列表以及 IO.Path.GetFileName 实际作用这一事实。

      【讨论】:

      • 我认为您的意思是“GetDirectoryName”。
      • 不,我的意思是 GetFileName。阅读文档或尝试代码。
      • MSDN 声明“返回指定路径字符串的文件名和扩展名。”该问题要求提供目录列表,而不是文件列表。该代码确实有效,但这并不意味着您正在以非设计的方式使用方法。
      • 阅读整个内容以了解它实际返回的内容。名字不好,但是……
      • "返回值类型:System.String 路径中​​最后一个目录字符之后的字符..."
      【解决方案5】:
        For Each Dir As String In Directory.GetDirectories(FolderName)
              ComboBox3.Items.Add(IO.Path.GetFileName(Dir))
        Next
      

      【讨论】:

        猜你喜欢
        • 2018-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-20
        • 2011-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多