先定义一个枚举,用于程序表示是哪个压缩算法。
01 /// <summary>
02 /// 压缩枚举
1、想要做压缩包需要有相应的压缩软件,以2345好压压缩软件为例。2、打开软件管理或浏览器,搜索“2345好压”,进行下载、安装。3、2345好压的安装很简单,点击“一键安装”就可以了,安装完成后找到需要压缩的文件。。
03 /// </summary>
04 public enum ZipEnum
05 {
06 //压缩时间长,压缩率高
07 BZIP2。
09 //压缩效率高,压缩率低
10 GZIP
1、首先需要下载一个压缩工具,打开浏览器,找到WinRAR压缩工具,先下载好,待会用来压缩文件。2、下载之后安装,然后找到要进行压缩的文件,在文件上右击,点击弹出的快捷菜单:添加到压缩文件。3、然后在弹出的对话框中直接点。
11 }
1、首先新建一个文件夹,将需要压缩的所有文件都复制粘贴到该文件夹内;2、复制完成后回到上一级路径,右键点击文件夹,在弹出菜单中选择【添加到压缩文件】;3、如果无需设置名称和压缩参数,直接选择添加到XXX.zip或添加到。
单个文件的压缩:
01 #region 制作压缩包(单个文件压缩)
02 /// <summary>
03 /// 制作压缩包(单个文件压缩)
04 /// </summary>
05 /// <param name=&34;>原文件</param>
06 /// <param name=&34;>压缩文件</param>
07 /// <param name=&34;>压缩算法枚举</param>
08 /// <returns>压缩成功标志</returns>
09 public static bool ZipFile(string srcFileName,string zipFileName,ZipEnum zipEnum)
10 {
11 bool flag = true;
12 try
13 {
14 switch (zipEnum)
15 {
16 case ZipEnum.BZIP2:
18 FileStream inStream = File.OpenRead(srcFileName);
19 FileStream outStream = File.Open(zipFileName,FileMode.Create);
21 //参数true表示压缩完成后,inStream和outStream连接都释放
22 BZip2.Compress(inStream,outStream,true,4096);
24 inStream.Close();
25 outStream.Close();
28 break;
29 case ZipEnum.GZIP:
31 FileStream srcFile = File.OpenRead(srcFileName);
33 GZipOutputStream zipFile = newGZipOutputStream(File.Open(zipFileName,FileMode.Create));
35 byte[] fileData = new byte[srcFile.Length];
36 srcFile.Read(fileData,0,(int)srcFile.Length);
37 zipFile.Write(fileData,0,fileData.Length);
39 srcFile.Close();
40 zipFile.Close();
42 break;
43 default: break;
44 }
45 }
46 catch
47 {
48 flag = false;
49 }
50 return flag;
51 }
52 #endregion
单个文件的解压缩:
01 #region 解压缩包(单个文件解压缩)
02 /// <summary>
03 /// 解压缩包(单个文件解压缩)
04 /// </summary>
05 /// <param name=&34;>压缩文件</param>
06 /// <param name=&34;>解压缩文件</param>
07 /// <param name=&34;>压缩算法枚举</param>
08 /// <returns>压缩成功标志</returns>
09 public static bool UnZipFile(string zipFileName,stringunzipFileName,ZipEnum zipEnum)
10 {
11 bool flag = true;
12 try
13 {
14 switch (zipEnum)
15 {
16 case ZipEnum.BZIP2:
手机如何制作压缩包文件,17 FileStream inStream = File.OpenRead(zipFileName);
18 FileStream outStream = File.Open(unzipFileName,FileMode.Create);
19 BZip2.Decompress(inStream,outStream,true);
20 break;
21 case ZipEnum.GZIP:
22 GZipInputStream zipFile = newGZipInputStream(File.OpenRead(zipFileName));
25 int bufferSize = 2048 * 2;
26 byte[] fileData = new byte[bufferSize];
28 while (bufferSize > 0)
29 {
30 bufferSize = zipFile.Read(fileData,0,bufferSize);
31 zipFile.Write(fileData,0,bufferSize);
32 }
33 destFile.Close();
34 zipFile.Close();
35 break;
36 default: break;
37 }
38 }
39 catch
40 {
41 flag = false;
42 }
43 return flag;
44 }
45 #endregion
上面的两个方法在引用了dll后,可以直接使用。
看到这里,相信读者有疑问了,如果我想让多个文件压缩到1个zip包里呢?甚至可以给文件加密?给zip包加注释?
好吧,我这里继续贴两个方法,都经过测试,可用。
制作压缩包
01 #region 制作压缩包(将多个文件压缩到一个压缩包,支持加密、注释)
02 /// <summary>
03 /// 制作压缩包(多个文件压缩到一个压缩包,支持加密、注释)
04 /// </summary>
05 /// <param name=&34;>压缩文件目录</param>
06 /// <param name=&34;>压缩包文件名</param>
08 /// <param name=&34;>密码</param>
09 /// <param name=&34;>注释</param>
10 public static void ZipFiles(string topDirectoryName,string zipedFileName,intcompresssionLevel,string password,string comment)
11 {
12 using (ZipOutputStream zos = newZipOutputStream(File.Open(zipedFileName,FileMode.OpenOrCreate)))
13 {
14 if (compresssionLevel != 0)
15 {
16 zos.SetLevel(compresssionLevel);//设置压缩级别
17 }
19 if (!string.IsNullOrEmpty(password))
20 {
21 zos.Password = password;//设置zip包加密密码
22 }
24 if (!string.IsNullOrEmpty(comment))
1、将要压缩的文件放置于同一个文件夹下;2、选定要压缩的文件;3、在其中一个文件上右击,选择添加到压缩文件;4、可修改压缩文件名称,默认保存于当前文件夹,点击确定等待完成即可。
25 {
26 zos.SetComment(comment);//设置zip包的注释
27 }
29 //循环设置目录下所有的*.jpg文件(支持子目录搜索)
30 foreach (string file inDirectory.GetFiles(topDirectoryName,&34;,SearchOption.AllDirectories))
31 {
32 if (File.Exists(file))
33 {
34 FileInfo item = new FileInfo(file);
35 FileStream fs = File.OpenRead(item.FullName);
36 byte[] buffer = new byte[fs.Length];
37 fs.Read(buffer,0,buffer.Length);
39 ZipEntry entry = new ZipEntry(item.Name);
40 zos.PutNextEntry(entry);
41 zos.Write(buffer,0,buffer.Length);
42 }
43 }
44 }
45 }
46 #endregion
解压缩包:
01 #region 解压缩包(将压缩包解压到指定目录)
02 /// <summary>
03 /// 解压缩包(将压缩包解压到指定目录)
04 /// </summary>
05 /// <param name=&34;>压缩包名称</param>
06 /// <param name=&34;>解压缩目录</param>
07 /// <param name=&34;>密码</param>
08 public static void UnZipFiles(string zipedFileName,string unZipDirectory,stringpassword)
09 {
10 using (ZipInputStream zis = newZipInputStream(File.Open(zipedFileName,FileMode.OpenOrCreate)))
11 {
12 if (!string.IsNullOrEmpty(password))
13 {
14 zis.Password = password;//有加密文件的,可以设置密码解压
15 }
17 ZipEntry zipEntry;
19 {
20 string directoryName = Path.GetDirectoryName(unZipDirectory);
22 string fileName = Path.GetFileName(zipEntry.Name);
24 pathName = pathName.Replace(&34;,&34;);
首先打开手机,点击“文件管理”图标,进入文件管理页面。然后在文件管理中找到“压缩包”选项,进入之后点击需要打开的压缩包。之后选择“用其他应用打开”后,即可对文件进行解压。1、首先打开手机,找到手机自带的“文件管理”。
25 directoryName += &34; + pathName;
27 if (!Directory.Exists(directoryName))
28 {
29 Directory.CreateDirectory(directoryName);
30 }
32 if (!string.IsNullOrEmpty(fileName))
先新建一个文件夹,再压缩则可。1、首先点击鼠标右键,在弹出框里选择“新建”选项,再在右边的弹出框里点击“文件夹”;2、就会新建了一个文件夹,然后把相关的文件复制粘贴到该新建文件夹里;3、粘贴完后关闭该文件夹,。
33 {
34 FileStream fs = File.Create(Path.Combine(directoryName,fileName));
35 int size = 2048;
36 byte[] bytes = new byte[2048];
37 while (true)
38 {
39 size = zis.Read(bytes,0,bytes.Length);
40 if (size > 0)
41 {
42 fs.Write(bytes,0,size);
43 }
44 else
45 {
46 break;
47 }
48 }
49 fs.Close();
50 }
51 }
52 }
53 }
54 #endregion
调用时我们可以这么写:
ZipFileUtil.UnZipFiles(&34;,&34;,&34;);//解压缩包