SharpZipLib 和 ziparchive 打开问题
SharpZipLib and ziparchive open issue
我正在使用 SharpZipLib 创建一个受密码保护的 zip 文件并插入 3 个文件:
- Demo.xml
- Code.pdf
- File.htm
使用以下代码:
Protected _file As ZipFile
Public Sub New(ByVal pathName As String)
If Not File.Exists(pathName) Then
Try
_file = ZipFile.Create(pathName)
Catch ex As Exception
End Try
Else
Try
_file = New ZipFile(pathName)
Catch ex As Exception
End Try
End If
End Sub
Public Sub Insert(ByVal name As String,
ByVal streamFile As Stream)
Dim sds As New CustomStaticDataSource
sds.SetStream(streamFile)
Try
_file.BeginUpdate()
_file.Add(sds, name)
_file.CommitUpdate()
Catch ex As Exception
Throw
End Try
End Sub
Private Class CustomStaticDataSource
Implements IStaticDataSource
Private _stream As Stream
Public Function GetSource() As Stream Implements IStaticDataSource.GetSource
Return _stream
End Function
Public Sub SetStream(inputStream As Stream)
_stream = inputStream
_stream.Position = 0
End Sub
End Class
文件可以用windows和7zip打开和解压。
当我尝试打开它并从 windows 上的 C++ 应用程序中提取第一个文件时,它经常失败,我正在使用 ziparchive。
Ziparchive 通过检查 crc、压缩和原始大小的一致性来检测它是否已损坏。
问题是未正确检测到未压缩的大小,但始终检测为十六进制 04034b50(十进制 67324752)。
是否有必须设置的选项才能解决此问题?
问题已由 ziparchive 确认并修复
我正在使用 SharpZipLib 创建一个受密码保护的 zip 文件并插入 3 个文件:
- Demo.xml
- Code.pdf
- File.htm
使用以下代码:
Protected _file As ZipFile
Public Sub New(ByVal pathName As String)
If Not File.Exists(pathName) Then
Try
_file = ZipFile.Create(pathName)
Catch ex As Exception
End Try
Else
Try
_file = New ZipFile(pathName)
Catch ex As Exception
End Try
End If
End Sub
Public Sub Insert(ByVal name As String,
ByVal streamFile As Stream)
Dim sds As New CustomStaticDataSource
sds.SetStream(streamFile)
Try
_file.BeginUpdate()
_file.Add(sds, name)
_file.CommitUpdate()
Catch ex As Exception
Throw
End Try
End Sub
Private Class CustomStaticDataSource
Implements IStaticDataSource
Private _stream As Stream
Public Function GetSource() As Stream Implements IStaticDataSource.GetSource
Return _stream
End Function
Public Sub SetStream(inputStream As Stream)
_stream = inputStream
_stream.Position = 0
End Sub
End Class
文件可以用windows和7zip打开和解压。
当我尝试打开它并从 windows 上的 C++ 应用程序中提取第一个文件时,它经常失败,我正在使用 ziparchive。
Ziparchive 通过检查 crc、压缩和原始大小的一致性来检测它是否已损坏。
问题是未正确检测到未压缩的大小,但始终检测为十六进制 04034b50(十进制 67324752)。
是否有必须设置的选项才能解决此问题?
问题已由 ziparchive 确认并修复