0

だから私は助けが必要な2つの機能を持っています。

Public Function checkZipForFiles(ByVal zipFilepath As String)
    Try
        Dim doc As New System.Xml.XmlDocument
        If My.Computer.FileSystem.FileExists("Backup.xml") Then
            doc.Load("Backup.xml")

            Dim JobNodes As XmlNodeList = doc.GetElementsByTagName("Job")
            For Each JobNode In JobNodes
                Dim Source = JobNode.SelectNodes("Source")

                For Each item As System.Xml.XmlNode In Source
                    For Each File In checkFilesInFolder(item.InnerText)
                        Using zip = ZipFile.Read(zipFilepath)
                            Dim fileName As String
                            fileName = checkFilesInFolder(item.InnerText)
                            Dim e As ZipEntry = zip(fileName)

                            If e Is Nothing Then
                                Console.WriteLine("File: " & fileName & " does not exist in zip.")
                            End If
                        End Using
                    Next

                Next
            Next
        End If
    Catch ex As Exception
        Console.Error.WriteLine(ex.Message)
        myLogger.Log(ex.Message)
    End Try

End Function

これはxmlファイルを読み込みます。xml ファイルには、「宛先」、「ファイル ソース」、「ジョブ名」などの圧縮処理に関する情報が格納されます。この関数で zip をチェックして、すべてのファイルが zip に含まれているかどうかを確認します。ご覧のとおり、この関数は「checkFilesiInFolder」関数を使用して、zip 内で検索するファイル名を取得する必要があります。

問題 - 「checkFilesInFolder」関数でスキャンされた最後のファイルのみが返されます。

Public Function checkFilesInFolder(ByVal folderPath As String)
    Try
        ' make a reference to a directory
        Dim di As New IO.DirectoryInfo(folderPath)
        Dim diar1 As IO.FileInfo() = di.GetFiles()
        Dim file As IO.FileInfo

        Console.WriteLine("The following files are located in " & folderPath)

        'list the names of all files in the specified directory
        For Each file In diar1
            Console.WriteLine(file.FullName)
            'myLogger.Log(file.ToString)

        Next
        Return file.ToString
    Catch ex As Exception
        Console.Error.WriteLine(ex.Message)
        myLogger.Log(ex.Message)
    End Try
End Function
4

1 に答える 1