【问题标题】:Why Do I Get 'Illegal characters in path' in My Visual Basic Code?为什么我的 Visual Basic 代码中出现“路径中的非法字符”?
【发布时间】:2012-06-19 20:51:54
【问题描述】:

我有一个包含多个子目录的目录,其中包含 .doc 文件。示例:

C:\Users\tmedina\Documents\testenviroment\Released\500\test0.doc
C:\Users\tmedina\Documents\testenviroment\Released\501\test1.doc
C:\Users\tmedina\Documents\testenviroment\Released\502\test2.doc
...
C:\Users\tmedina\Documents\testenviroment\Released\520\test20.doc

在下面的代码中,我试图在列表框中显示所有以扩展名“.doc”结尾的文件,这些文件位于C:\Users\tmedina\Documents\testenviroment\Released 的子目录中

例如,我有

Dim root As String = "C:\Users\tmedina\Documents\testenviroment"

For Each fileFound As String In Directory.GetFiles(Path.Combine(root, "Released\*\*.doc"))
        ListBox1.Items.Add(fileFound)
    Next

但它不断抛出Illegal characters in path 错误。 关于我做错了什么有什么建议吗?

【问题讨论】:

    标签: vb.net visual-studio-2010


    【解决方案1】:

    文件系统不理解 released\*\*.doc 中的双重 *
    只接受一个参数的 Directory.GetFiles 重载不喜欢部分路径规范 (....*.doc)

    试试这个

    Dim root As String = "C:\Users\tmedina\Documents\testenviroment\released" 
    
    For Each fileFound As String In Directory.GetFiles(root, "*.doc", SearchOption.AllDirectories)) 
        ListBox1.Items.Add(fileFound) 
    Next 
    

    Visual Basic 语言不需要转义 \ 字符。
    Directory.GetFiles 有一个重载,它采用您的基本路径、通配符搜索字符串和搜索基本路径的所有子文件夹的选项。

    【讨论】:

    • 啊,很好的电话SearchOption.AllDirectories。我不怎么使用这些方法,而且我下班时急于发布答案,所以我没有机会检查所有的重载。希望你不介意我偷那个作为我的答案。我讨厌让我的答案年久失修。
    【解决方案2】:

    您的问题是您误用了GetFiles 方法。如果要传递诸如“*.doc”之类的搜索字符串,则必须将其作为第二个参数,例如:

    Directory.GetFiles(Path.Combine(root, "Released"), "*.doc")
    

    此外,您不能为其指定包含通配符的文件夹路径,例如“C:\Users\tmedina\Documents\testenviroment\Released*”。如果您想要所有子文件夹,则需要为搜索选项指定第三个参数:

    Directory.GetFiles(Path.Combine(root, "Released"), "*.doc", SearchOption.AllDirectories)
    

    除非出于某种原因您不希望它搜索所有后代目录而只希望它搜索直接子目录。在这种情况下,您必须使用 Directory.GetDirectories 来获取所有直接子目录的列表,然后循环访问它们,为每个子目录调用 GetFiles

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 2020-10-13
      • 2021-03-24
      • 1970-01-01
      • 2019-08-30
      • 2021-08-16
      • 2016-10-06
      相关资源
      最近更新 更多