C#使用SharpZipLib进行压缩文件(*.rar,*.zip)操作,压缩和解压


C#使用SharpZipLib进行压缩文件(*.rar,*.zip)操作,压缩和解压

C#使用SharpZipLib对文件进行压缩(.rar,.zip)

C# 全选
private MemoryStream DoZip(List<PluginImportModel> contents)
{
	MemoryStream memoryStream = new MemoryStream();
	ZipOutputStream zipOutStream = new ZipOutputStream(memoryStream);
	foreach (var plugin in contents)
	{
		// 压缩包中的文件名
		string fileName = plugin.pluginName + ".yesp";
		ZipEntry entry = new ZipEntry(fileName);
		entry.DateTime = DateTime.Now;
		entry.IsUnicodeText = true;
		zipOutStream.PutNextEntry(entry);

		// 文件中内容
		string content = Newtonsoft.Json.JsonConvert.SerializeObject(plugin);
		//byte[] array = Encoding.ASCII.GetBytes(content);

		// 加密
		byte[] array = Encrypt(content);

		zipOutStream.Write(array, 0, array.Length);
		zipOutStream.CloseEntry();
	}
	//使用流操作时一定要设置IsStreamOwner为false。否则很容易发生在文件流关闭后的异常。
	zipOutStream.IsStreamOwner = false;
	zipOutStream.Finish();
	zipOutStream.Close();

	//byte[] buffer = memoryStream.GetBuffer();
	memoryStream.Seek(0, SeekOrigin.Begin);
	return memoryStream;

}

C#使用SharpZipLib对压缩文件(.rar,.zip)进行解压

C# 全选
/// <summary>
/// 解压文件
/// </summary>
/// <param name="stream"></param>
/// <param name="localPath"></param>
void unZIP(Stream stream, string localPath)
{
	ZipInputStream zipInputStream = new ZipInputStream(stream);
	ZipEntry zipEntryFromZippedFile;
	while ((zipEntryFromZippedFile = zipInputStream.GetNextEntry()) != null)
	{
		if (zipEntryFromZippedFile.IsDirectory)
		{
			string _p = System.IO.Path.Combine(localPath, zipEntryFromZippedFile.Name.Replace("/", "\\"));
			if (!System.IO.Directory.Exists(_p))
				System.IO.Directory.CreateDirectory(_p);
		}
		if (zipEntryFromZippedFile.IsFile)
		{
			//var _extension = Path.GetExtension(zipEntryFromZippedFile.Name);
			//if (_extension.ToLower() != ".yesp") continue;

			byte[] data = new byte[zipInputStream.Length];
			if (zipInputStream.Read(data, 0, data.Length) > 0)
			{
				using (FileStream streamWriter = System.IO.File.Create(System.IO.Path.Combine(localPath, zipEntryFromZippedFile.Name.Replace("/", "\\"))))
				{
					streamWriter.Write(data, 0, data.Length);
				}
			}
		}
	}
	zipInputStream.Close();
}
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:自己创造一个格式,自定义文件后缀名
下一篇:C# 利用SharpZipLib对*.rar压缩文件解压报错
评论列表

发表评论

评论内容
昵称:
关联文章

C#使用SharpZipLib进行压缩文件(*.rar,*.zip)操作压缩和解
C# 利用SharpZipLib对*.rar压缩文件报错
C# 利用 SharpZipLib 对多个文本字符串进行文件打包为RARZIP进行下载
C#操作 配置文件*.ini
在Vue 3项目中使用TypeScript和Pinia进行持久化状态管理和初始化操作
C#根据文件流判断文件类型
C# winform选择dll文件
WPF 使用 Silk.NET 进行 DirectX 渲染入门
Winform中使用HttpClient与后端api服务进行交互
gulp处理LESS,以及js压缩
如何在Vue 3和Vite项目中禁用代码压缩打包
C# 读取txt文件生成Word文档
Python使用selenium+chrome进行抓包
Task 使用详细[基础操作,异步原则,异步函数,异步模式]
C# 使用Roslyn编译项目 .csproj
C#爬虫:使用Selenium,Selenium配置指南
如何在进销存系统中进行账期管理和封账操作
C#读取被进程占用的文件,只读模式打开文件
Elasticsearch使用系列-ES增删查改基本操作+ik分词
文件加密技术研究

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码