0

プログレスバーに進行状況を表示しながら、プログラムで .zip ファイルを抽出し、そのコンテンツをフォルダーに配信しようとしています。プログレスバーが機能しない場合は、「Unzipper」が別のフォームに切り替えることができれば幸いです。抽出のために現在取得しているコードは次のとおりです。

    Dim sc As New Shell32.Shell()
    'Create directory in which you will unzip your files .
    IO.Directory.CreateDirectory("C:\Users\NikolajBanke\Desktop\Test\Unzipped")
    'Declare the folder where the files will be extracted
    Dim output As Shell32.Folder = sc.NameSpace("C:\Users\NikolajBanke\Desktop\Test\Unzipped")
    'Declare your input zip file as folder  .
    Dim input As Shell32.Folder = sc.NameSpace("C:\Users\NikolajBanke\Desktop\Test\peace.zip")
    'Extract the files from the zip file using the CopyHere command .
    output.CopyHere(input.Items, 4)

私が得る助けをありがとう:)

4

2 に答える 2

0

進行 状況バーが表示されるようになりましたoutput.CopyHere(input.Items, 4)output.CopyHere(input.Items, 16)

于 2015-05-06T01:49:48.827 に答える
0

私の意見では、ZipArchive の方がはるかに優れています。プログレスバー イベントを処理できるため、「System.IO.Compression」参照を含めることを忘れないでください。

    Public Async Function Extraer(zipFilePath As String, extractPath As String) As Task
    Dim elzip As ZipArchive = ZipFile.OpenRead(zipFilePath)
    Dim lacuenta As Integer = elzip.Entries.Count
    For i = 0 To lacuenta - 1
        Dim entry As ZipArchiveEntry = elzip.Entries(i)
        If entry.Name.Trim = "" Then
            My.Computer.FileSystem.CreateDirectory(Path.Combine(extractPath, entry.FullName))
        Else
            Try
                entry.ExtractToFile(Path.Combine(extractPath, entry.FullName))
            Catch ex As Exception
            End Try
        End If
        ProgressBar1.Value = (i / (lacuenta - 1)) * 100
    Next
End Function
于 2016-11-09T05:14:58.890 に答える