C# 构造文件和文件夹压缩软件
一、引言
实验目的
通过制作一个小项目,学习C#的图形化编程。
实验任务
构造文件和文件夹压缩软件
- 通过压缩算法实现一个文件或者文件夹的压缩
- 构建相应的图形用户界面,并生成release版本
实验环境
- VS2019
- .NET Framework 4.7.2
- ICSharpCode.SharpZipLib.dll
二、 实验过程
准备工作
将设置转化为C# 设置
建立ZIPAPP项目,选择建立图形用户界面项目
项目说明:
- ZipHelper.cs 为文件压缩解压缩提供支持
- Form.cs 建立UI界面
运用VS中自带的NuGet包,安装ICSharpCode.SharpZipLib库
开始编程
- 创建ZipHelper类,调用ICSharpCode,在此类中实现对于文件文件夹的压缩,实现对于文件夹的解压缩
导入ICSharpCode.SharpZipLib库
using ICSharpCode.SharpZipLib.Zip;
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Checksum;
由于英文文档比较混乱,且最近墙比较高,所以直接参考晚上的各种版本的运用ICSharpCode的例子
一、建立ZipHelper类
- 首先实现对于单个文件的压缩,然后递归遍历文件夹,实现对文件夹的压缩
public bool ZipDirectory(string folderToZip, string zipedFile, string password)
{
bool result = false;
if (!Directory.Exists(folderToZip))
return result;
ZipOutputStream zipStream = new ZipOutputStream(File.Create(zipedFile));
zipStream.SetLevel(6);
if (!string.IsNullOrEmpty(password)) zipStream.Password = password;
result = ZipDirectory(folderToZip, zipStream, "");
zipStream.Finish();
zipStream.Close();
return result;
}
/// <param name="folderToZip">要压缩的文件夹路径</param>
/// <param name="zipedFile">压缩文件完整路径</param>
public bool ZipDirectory(string folderToZip, string zipedFile)
{
bool result = ZipDirectory(folderToZip, zipedFile, null);
return result;
}
- 同理,创建解压缩的函数
public bool UnZip