通过子文件夹VB.net搜索多个文件

时间:2016-07-21 01:27:04

标签: vb.net visual-studio-2015

我很难弄清楚如何通过子文件夹查找多个文件,我正在寻找不同的文件名,我认为这就是为什么我可以'解决它。

" 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

1 个答案:

答案 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并修改那里演示的代码以适合您的搜索模式。