Vb.net 为什么我会得到';路径'中的非法字符;在我的Visual Basic代码中?
我有一个包含多个子目录的目录,其中包含.doc文件。例如:Vb.net 为什么我会得到';路径'中的非法字符;在我的Visual Basic代码中?,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,我有一个包含多个子目录的目录,其中包含.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\Docu
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
在下面的代码中,我试图在列表框中显示C:\Users\tmedina\Documents\testenviromet\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
但它不断抛出路径中的非法字符
错误。
关于我做错了什么有什么建议吗?文件系统不理解
发布的\*\*.doc中的double*
只接受一个参数的Directory.GetFiles oveload不喜欢部分路径规范(....*.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有一个重载,用于获取基本路径、一个通配符搜索字符串和一个用于搜索基本路径的所有子文件夹的选项 您的问题是误用了GetFiles
方法。如果要传递搜索字符串,如“*.doc”,则必须将其作为第二个参数传递,例如:
Directory.GetFiles(Path.Combine(root, "Released"), "*.doc")
此外,您不能为其提供包含通配符的文件夹路径,例如“C:\Users\tmedina\Documents\TestenViromet\Released*”。如果需要所有子文件夹,则需要为搜索选项指定第三个参数:
Directory.GetFiles(Path.Combine(root, "Released"), "*.doc", SearchOption.AllDirectories)
除非出于某种原因,您不希望它搜索所有子目录,而只希望它搜索直接子目录。在这种情况下,您必须使用Directory.GetDirectories
来获取所有直接子目录的列表,然后为每个子目录循环调用GetFiles
。啊,很好地调用了搜索选项.AllDirectories
。我不经常使用这些方法,而且我在下班的时候急于发布答案,所以我没有机会检查所有的过载。希望你不介意我偷了它作为我的答案。我讨厌把我的答案弄得年久失修。