我很难弄清楚如何通过子文件夹查找多个文件,我正在寻找不同的文件名,我认为这就是为什么我可以'解决它。
" FILE_NAME"在代码中是变量的名称,我从数据库中提取文档的名称,它存储在没有扩展名的字段中,然后当它找到.docx / doc文件时,它应该将其转换为PDF。
Dim di As DirectoryInfo = New DirectoryInfo("\\192.168.1.70\sisint\court\
agreements")
For Each fi In di.GetFiles(file_name, SearchOption.AllDirectories)
'seleccionamos los archivos con las extensiones de Word
If fi.Extension.ToUpper = ".DOC" Or fi.Extension.ToUpper = ".DOCX" Then
ListaArchivos.Add(fi.FullName)
ListaNombres.Add((fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length)))
End If
Next
答案 0 :(得分:0)
要搜索具有多个子目录的目录,您可以使用以下代码行:
Dim folders As List(Of String) = New DirectoryInfo("C:\Test").EnumerateFiles("test.txt", SearchOption.AllDirectories).[Select](Function(d) d.FullName).ToList()
替换" C:\ Test"与要搜索的目录和" test.txt"用文件名来搜索。如果相同的文件名在多个目录中,则将返回与该名称匹配的所有文件。
要查找多个文件名,只需遍历列表(file_name)替换" test.txt"与文件。如何保存所有输出取决于您。您可以将找到的所有内容添加到1个大型列表中,然后将它们全部转换为pdf' s,或者您可以在找到它们时进行转换。
以下是一个例子:
Private Function FindFiles() As List(Of String)
Dim allFilesFound As New List(Of String)
Dim dirSearch = "C:\Test"
Dim file_name As New List(Of String) From {"test.txt", "test2.txt"}
For Each file In file_name
allFilesFound.AddRange(New DirectoryInfo(dirSearch).EnumerateFiles(file, SearchOption.AllDirectories).[Select](Function(d) d.FullName).ToList())
Next
Return allFilesFound
End Function
请记住,file_name中的文件越多,您开始搜索的目录树越远,所需的时间就越长。如果您正在处理大量文件,请考虑使用递归,以便您可以在一次传递中找到所有文件。您可以在这里查看Recursively search folder with subdirectories in .NET并修改那里演示的代码以适合您的搜索模式。