码迷,mamicode.com
首页 > 其他好文 > 详细

关于SharpZipLib压缩分散的文件及整理文件夹的方法

时间:2017-01-03 13:38:11      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:解决   .sh   date   文件   pac   create   roo   dir   root   

今天为了解决压缩分散的文件时,发现想通过压缩对象直接进行文件夹整理很麻烦,因为SharpZipLib没有提供压缩进某个指定文件夹的功能,在反复分析了SharpZipLib提供的各个接口方法后,终于找到了解决方法,现在贴出来,给需要的同学参考参考。

下面是封装的压缩类:

using ICSharpCode.SharpZipLib.Zip;
using System;
using System.IO;

namespace test
{
    public class Zip
    {
        public static ZipOutputStream CreateZip(string targeFile)
        {
            Directory.CreateDirectory(Path.GetDirectoryName(targeFile));
            var s = new ZipOutputStream(File.Create(targeFile));
            s.SetLevel(6);
            return s;
        }
        public static void CloseZip(ZipOutputStream zip)
        {
            zip.Finish();
            zip.Close();
        }
        public static void Compress(ZipOutputStream s, string source, string folder)
        {
            using (FileStream fs = File.OpenRead(source))
            {
                var path = string.IsNullOrWhiteSpace(folder) ? source : folder;
                byte[] buffer = new byte[4 * 1024];
                ZipEntry entry = new ZipEntry(path.Replace(Path.GetPathRoot(path), "") + "\\" + Path.GetFileName(source));     //此处去掉盘符,如D:\123\1.txt 去掉D:
                entry.DateTime = DateTime.Now;
                s.PutNextEntry(entry);

                int sourceBytes;
                do
                {
                    sourceBytes = fs.Read(buffer, 0, buffer.Length);
                    s.Write(buffer, 0, sourceBytes);
                } while (sourceBytes > 0);
            }
        }

    }
}

  测试方法:

 public ActionResult Index()
        {
            var zip = Zip.CreateZip(@"D:\\testZip\\test.zip");

            Zip.Compress(zip, "E:\\Document\\down.png", "");
            Zip.Compress(zip, "E:\\Document\\ending.mp4", "D:\\testChildFolder");

            zip.Close();
        }

  

关于SharpZipLib压缩分散的文件及整理文件夹的方法

标签:解决   .sh   date   文件   pac   create   roo   dir   root   

原文地址:http://www.cnblogs.com/foren/p/6244454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!