.net压缩文件夹

1,引用:using System.IO.Packaging;

2,压缩文件的方法:

/// <summary>
    /// 压缩文件夹到制定的路径
    /// </summary>
    /// <param name="folderName">要压缩的文件物理路径</param>
    /// <param name="compressedFileName">目标文件物理路径和文件名</param>
    /// <param name="overrideExisting">是否覆盖存在的文件</param>
    /// <returns></returns>
    static bool PackageFolder(string folderName, string compressedFileName, bool overrideExisting)
    {
        if (folderName.EndsWith(@"\"))
            folderName = folderName.Remove(folderName.Length - 1);
        bool result = false;
        if (!Directory.Exists(folderName))
        {
            return result;
        }

        if (!overrideExisting && File.Exists(compressedFileName))
        {
            return result;
        }
        try
        {
            using (Package package = Package.Open(compressedFileName, FileMode.Create))
            {
                var fileList = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);
                foreach (string fileName in fileList)
                {

                    //The path in the package is all of the subfolders after folderName
                    string pathInPackage;
                    pathInPackage = Path.GetDirectoryName(fileName).Replace(folderName, string.Empty) + "/"
                        + Path.GetFileName(fileName);

                    Uri partUriDocument = PackUriHelper.CreatePartUri(new Uri(pathInPackage, UriKind.Relative));
                    PackagePart packagePartDocument = package.CreatePart(partUriDocument, "", CompressionOption.Maximum);
                    using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
                    {
                        fileStream.CopyTo(packagePartDocument.GetStream());
                    }
                }
            }
            result = true;
        }
        catch (Exception e)
        {
            throw new Exception("Error zipping folder " + folderName, e);
        }

        return result;
    }

 

转载于:https://www.cnblogs.com/Angel-szl/p/9986952.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值