X icon indicating copy to clipboard operation
X copied to clipboard

压缩文件.zip问题

Open damonxx opened this issue 2 years ago • 7 comments

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

damonxx avatar Jul 25 '22 05:07 damonxx

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

nnhy avatar Aug 13 '22 14:08 nnhy

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

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

damonxx avatar Aug 15 '22 01:08 damonxx

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

nnhy avatar Aug 15 '22 06:08 nnhy

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

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

damonxx avatar Aug 15 '22 07:08 damonxx

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

nnhy avatar Aug 15 '22 07:08 nnhy

就是压缩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)`

damonxx avatar Aug 15 '22 08:08 damonxx

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

nnhy avatar Aug 16 '22 00:08 nnhy