NewLifeX / X

Core basic components: log (file / network), configuration (XML / JSON / HTTP), cache (memory / redis), network (TCP / UDP / HTTP), RPC framework, serialization (binary / XML / JSON), APM performance tracking. 核心基础组件,日志(文件/网络)、配置(XML/Json/Http)、缓存(内存/Redis)、网络(Tcp/Udp/Http)、RPC框架、序列化(Binary/XML/Json)、APM性能追踪。

Home Page:https://newlifex.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

压缩文件.zip问题

damonxx opened this issue · comments

CreateFromDirectory压缩文件夹为zip压缩文件后,无法打开压缩文件,提示缺少压缩分卷

commented

可否写个能够重现该问题的单元测试?

var di = new System.IO.DirectoryInfo(@"D:\新建文件夹"); System.IO.PathHelper.Compress(di, @"D:\新建文件夹.zip");

这样生成的ZIP文件,用Bandizip打开时出现错误,提示缺少压缩分卷
IMG20220815092919

commented

经测试,没有发现该问题,PathHelper能够压缩和解压缩文件夹,并且7z能够打开压缩文件

经测试,没有发现该问题,PathHelper能够压缩和解压缩文件夹,并且7z能够打开压缩文件

压缩成 .7z是没问题的,Newlife.Core用的版本是8.11.2021.1225

commented

就是压缩zip,现在不支持7z等其它格式了。目前压缩的zip是标准格式

就是压缩zip,现在不支持7z等其它格式了。目前压缩的zip是标准格式
Newlife.Core版本8.11.2021.1225,.Net Framework 4.0 控制台程序
try { var di = new DirectoryInfo(@"D:\新建文件夹"); PathHelper.Compress(di, @"D:\11.zip"); var fi = new FileInfo(@"D:\11.zip"); PathHelper.Extract(fi, @"D:\11"); } catch(System.Exception ex) { XTrace.WriteException(ex); }
catch到的错误:
16:37:38.346 1 N - NewLife.Compression.ZipException: 不是有效的Zip格式! ---> NewLife.Compression.ZipException: 0x00000004处签名错误! 在 NewLife.Compression.ZipEntry.ReadEntry(ZipArchive zipfile, Stream stream, Boolean first, Boolean embedFileData) 在 NewLife.Compression.ZipArchive.Read(Stream stream, Nullable1 embedFileData)
在 NewLife.Compression.ZipArchive.EnsureRead()
--- 内部异常堆栈跟踪的结尾 ---
在 NewLife.Compression.ZipArchive.EnsureRead()
在 NewLife.Compression.ZipArchive.get_Entries()
在 System.IO.PathHelper.Extract(FileInfo fi, String destDir, Boolean overwrite)`

commented

这个是NET40版本,你试试最新的NET60版本,早期版本可能的确有bug。
或者你的项目调整为net4.61或以上,从Nuget引用beta版newlife.core