だから私は助けが必要な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