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

Posted 丰云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于SharpZipLib压缩分散的文件及整理文件夹的方法相关的知识,希望对你有一定的参考价值。

今天为了解决压缩分散的文件时,发现想通过压缩对象直接进行文件夹整理很麻烦,因为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压缩分散的文件及整理文件夹的方法的主要内容,如果未能解决你的问题,请参考以下文章

C#工具类:使用SharpZipLib进行压缩解压文件

C#工具类:使用SharpZipLib进行压缩解压文件

C#使用ICSharpCode.SharpZipLib.dll压缩文件夹和文件

C#利用SharpZipLib解压或压缩文件(支持多层目录递归压缩)

通过SharpZipLib实现文件夹压缩以及解压

使用 ICSharpCode.SharpZipLib.Zip压缩解压文件