使用GetFiles函数获取多种类型的文件扩展名

时间:2019-03-21 16:05:18

标签: vb.net code-behind

在VB中有一个功能,要求我获取所有扩展名为.pdf和.rtf的文件。尝试包含第二个参数时,我意识到它不会接受第二个参数。

有没有简单的方法可以做到这一点?

Dim s() As String = System.IO.Directory.GetFiles(Server.MapPath("PrintableForms.aspx").Replace("PrintableForms.aspx", "Forums\"), "*.pdf")

错误:

System.InvalidCastException: 'Conversion from string "*.rtf" to type 'Integer' is not valid.'

2 个答案:

答案 0 :(得分:1)

不要担心搜索模式的GetFiles重载。只需使用一些简单的LINQ进行过滤

' an array of the extensions
Dim extensions = {".pdf", ".rtf"}
' the path to search
Dim path = Server.MapPath("PrintableForms.aspx").Replace("PrintableForms.aspx", "Forums\")
' get only files in the path
Dim allFileNames = Directory.GetFiles(path)
' get files in the path and its subdirectories
'Dim allFileNames = Directory.GetFiles(path:=path, searchOption:=SearchOption.AllDirectories)
' get the filenames which have any of the extensions in the array above
Dim filteredFileNames = allFileNames.Where(Function(fn) extensions.Contains(System.IO.Path.GetExtension(fn)))

答案 1 :(得分:0)

我的目录中只有两种文件类型(我需要以上所有文件类型),因此一种简单的解决方案是删除GetFiles函数中仅指示.pdf的参数。

Dim s() As String = System.IO.Directory.GetFiles(Server.MapPath("PrintableForms.aspx").Replace("PrintableForms.aspx", "Forums\"))

这不是最佳的长期解决方案,但它可以满足我现在的需求。