手机怎么生成网站,新浪网页编辑器,档案信息网站建设,外贸平台有哪些分别对应哪个市场核心库NewLife.Core内置了压缩相关功能扩展#xff0c;并且独立实现的ZipFile还支持.NET2.0和.NET4.0#xff0c;该类在.NET4.5以后成为.NET Framework框架标配。数据流压缩IOHelper类扩展了字节数组和数据流的压缩扩展方法Byte[] Compress(this Byte[] data);
Byte[] Decomp… 核心库NewLife.Core内置了压缩相关功能扩展并且独立实现的ZipFile还支持.NET2.0和.NET4.0该类在.NET4.5以后成为.NET Framework框架标配。数据流压缩IOHelper类扩展了字节数组和数据流的压缩扩展方法Byte[] Compress(this Byte[] data);
Byte[] Decompress(this Byte[] data);
Stream Compress(this Stream inStream, Stream outStream null);
Stream Decompress(this Stream inStream, Stream outStream null);
Stream CompressGZip(this Stream inStream, Stream outStream null);
Stream DecompressGZip(this Stream inStream, Stream outStream null);从.NET2.0开始就内置了Deflate压缩算法这是很常见的一种数据压缩算法HTTP常用它进行压缩压缩比一般但是压缩速度很好。上述字节数组和数据流的扩展就是对DeflateStream的简单封装以兼容.NET2.0之上的所有应用不同NFX版本的DeflateStream用法有所不同。而GZip则是一种数据格式多了个头部数据体部分还是Deflate压缩。因此数据流压缩直接用Deflate算法而压缩为文件时则使用GZip一般用gz后缀。例如XCode导出整表数据时为了减小文件大小会直接输出到用GZipStream包装的文件流。文件压缩PathHelper类扩展了文件和目录的压缩及解压缩。void Extract(this FileInfo fi, String destDir, Boolean overwrite false);
void Compress(this FileInfo fi, String destFile);
void Compress(this DirectoryInfo di, String destFile null);Extract把压缩文件解压缩到目标目录支持覆盖已存在文件。一般用于压缩备份和数据恢复场合。注意.zip后缀文件采用ZipFile类处理其它后缀仅支持在Windows上调用7z处理下同Compress把文件压缩到目标文件一般用于压缩备份日志等文本文件有很大的压缩比。Compress另一个重载把目录压缩到目标文件一般用于压缩备份整个目录如配置文件目录等。ZipFile压缩Zip压缩文件实现类ZipArchive而ZipFile扩展了常用方法。// 打开压缩文档
ZipArchive Open(String archiveFileName, ZipArchiveMode mode, Encoding entryNameEncoding null);
// 从目录创建压缩文档
void CreateFromDirectory(String sourceDirectoryName, String destinationArchiveFileName, CompressionLevel compressionLevel, Boolean includeBaseDirectory);压缩文件using var zip ZipFile.Open(destFile, ZipArchiveMode.Create);
zip.CreateEntryFromFile(fi.FullName, fi.Name, CompressionLevel.Optimal);解压缩文件using var zip ZipFile.Open(fi.FullName, ZipArchiveMode.Read, null);
var di Directory.CreateDirectory(destDir);
var fullName di.FullName;
foreach (var item in zip.Entries)
{var fullPath Path.GetFullPath(Path.Combine(fullName, item.FullName));if (!fullPath.StartsWith(fullName, StringComparison.OrdinalIgnoreCase))throw new IOException(IO_ExtractingResultsInOutside);if (Path.GetFileName(fullPath).Length 0){if (item.Length ! 0L) throw new IOException(IO_DirectoryNameWithData);Directory.CreateDirectory(fullPath);}else{Directory.CreateDirectory(Path.GetDirectoryName(fullPath));try{item.ExtractToFile(fullPath, overwrite);}catch { }}
}Zip文件本质上就是一个档案数据库头部有目录后面就是各个被压缩文件的数据。通过扩展方法或者构造函数拿到ZipArchive后直接CreateEntry就可以加入要压缩的文件或者遍历Entries集合就得到内部每个被压缩文件。7z压缩SevenZip类用于对7z.exe进行包装在Windows上处理各种类型压缩文件它拥有极高的压缩比在某些维护性系统中具有无可比拟的优势。SevenZip首先在附近目录查找7z.exe然后在注册表查找安装路径实在找不到就从X组件资源站下载 http://x.newlifex.com/7z_v16.04.zip 。