1

SevenZipSharp からの抽出出力をメモリに書き込んでからファイルに書き込むのではなく、オンザフライでファイルに書き込むことは可能ですか?

ファイルに直接ではなくストリームに書き込んでいる理由は、特定の場所でバイトをチェックするためです (抽出されるファイルのバージョンを判断するため)。ファイルが抽出されます。

サンプル コードは機能しますが、非常に遅く、イベント内にストリームを書き込む方法がわかりません。Dim ms As New MemoryStream

Private Sub Test()

    Using tmp = New SevenZipExtractor(FILENAME)

        AddHandler tmp.Extracting, AddressOf SevenZip_Extracting
        AddHandler tmp.ExtractionFinished, AddressOf SevenZip_ExtractionFinished
        tmp.ExtractFile(0, ms)

    End Using

End Sub


Private Sub SevenZip_Extracting(ByVal sender As Object, ByVal e As ProgressEventArgs)

   ' Read Bytes at position 3756  (b * 256 + a)
    If e.PercentDone = 1 Then
       Dim br As BinaryReader = New BinaryReader(ms)
       Dim lngStartPos As Long = 3756
       br.BaseStream.Seek(lngStartPos, SeekOrigin.Begin)
       Dim a As Byte = br.ReadByte()
       Dim b As Byte = br.ReadByte()
       Console.WriteLine(b * 256 + a)
    End If

    Using fs As FileStream = File.OpenWrite("C:\Temp\output.tmp")
        ms.WriteTo(fs)
    End Using


End Sub
4

0 に答える 0