Use CompressionMethod.Stored and flush the ZipOutputStream after each entity was added leads Zip corrupted in SharpZipLib 1.4.2
还没有人认领这个 Issue。
评估
调研方向
从报告中展示的 ZipOutputStream 和 ZipEntry 处理开始,重点关注使用 CompressionMethod.Stored 时异步关闭条目和 FlushAsync。使用多个文件重现该序列,然后验证在每个添加的实体之后进行刷新仍会生成包含每个文件的有效存档。
由索引模型根据 Issue 内容生成。
描述
Describe the bug
I found a bug that if I set CompressionMethod = CompressionMethod.Stored in the entry and flush the ZipOutputStream, the output zip is corrupted and only the first file exists in the zip file.
using (Stream NewZipStream = File.OpenWrite(Path.GetRandomFileName()))
using (ZipOutputStream ZipStream = new ZipOutputStream(NewZipStream , StringCodec.FromEncoding(Encoding.UTF8)))
{
ZipStream.SetLevel(0);
ZipStream.UseZip64 = UseZip64.Dynamic;
ZipStream.IsStreamOwner = false;
foreach (string FilePath in Directory.EnumerateFiles("<Your folder that has multiple files>"))
{
using (Stream FileStream = File.OpenRead(FilePath))
{
ZipEntry NewEntry = new ZipEntry(File.Name)
{
DateTime = DateTime.Now,
CompressionMethod = CompressionMethod.Stored,
Size = FileStream.Length
};
await ZipStream.PutNextEntryAsync(NewEntry, CancelToken);
await FileStream.CopyToAsync(ZipStream);
await ZipStream.CloseEntryAsync(CancelToken);
}
await ZipStream.FlushAsync(CancelToken);
}
}
Reproduction Code
No response
Steps to reproduce
- Use ZipOutputStream
- Set CompressionMethod to CompressionMethod.Stored on ZipEntry
- Add multiple files/folders into ZipOutputStream
- Flush the ZipOutputStream once each entity was added
- Found the zip file is corrupted
Expected behavior
Zip is not corrupted
Operating System
Windows
Framework Version
.NET 7
Tags
ZIP
Additional context
No response
- 主要语言
- C#
- 星标
- 3.9k
- 派生
- 1k
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
icsharpcode/SharpZipLib 的其他 Issue
-
*no response* bug
难度 1/5 1 小时以内 新手友好度 78/100
icsharpcode/SharpZipLib#905 · 1 条评论 ·
-
bug bzip2
难度 4/5 3-5 天 新手友好度 45/100
icsharpcode/SharpZipLib#904 ·
-
enhancement zip
难度 2/5 1-2 天 新手友好度 55/100
icsharpcode/SharpZipLib#903 ·
-
*no response* bug
难度 4/5 3-5 天 新手友好度 32/100
icsharpcode/SharpZipLib#901 · 1 条评论 ·
-
*no response* bug
难度 4/5 3-5 天 新手友好度 35/100
icsharpcode/SharpZipLib#894 · 1 条评论 ·
查看 icsharpcode/SharpZipLib 的全部 Issue
相似的 Issue
-
bug
难度 1/5 1 小时以内 新手友好度 90/100
-
Type: enhancement
难度 2/5 1-3 小时 新手友好度 65/100
apache/arrow-adbc#4809 ·
-
type/automation type/tech-debt
难度 2/5 1-3 小时 新手友好度 70/100
-
难度 2/5 1-3 小时 新手友好度 65/100
microsoft/vscode-azurefunctions#5197 · 1 条评论 ·
-
难度 1/5 1 小时以内 新手友好度 85/100
microsoft/microsoft-ui-reactor#1274 ·