コード例 #1
0
ファイル: ZipUtility.cs プロジェクト: xzp3094997376/FBXLoad
    /// <summary>
    /// 压缩文件和文件夹
    /// </summary>
    /// <param name="_fileOrDirectoryArray">文件夹路径和文件名</param>
    /// <param name="_outputPathName">压缩后的输出路径文件名</param>
    /// <param name="_password">压缩密码</param>
    /// <param name="_zipCallback">ZipCallback对象,负责回调</param>
    /// <returns></returns>
    public static bool Zip(string[] _fileOrDirectoryArray, string _outputPathName, string _password = null, ZipCallback _zipCallback = null)
    {
        if ((null == _fileOrDirectoryArray) || string.IsNullOrEmpty(_outputPathName))
        {
            if (null != _zipCallback)
            {
                _zipCallback.OnFinished(false);
            }

            return(false);
        }



        ZipOutputStream zipOutputStream = new ZipOutputStream(File.Create(_outputPathName));

        zipOutputStream.SetLevel(6);    // 压缩质量和压缩速度的平衡点
        if (!string.IsNullOrEmpty(_password))
        {
            zipOutputStream.Password = _password;
        }

        for (int index = 0; index < _fileOrDirectoryArray.Length; ++index)
        {
            bool   result          = false;
            string fileOrDirectory = _fileOrDirectoryArray[index];
            if (Directory.Exists(fileOrDirectory))
            {
                result = ZipDirectory(fileOrDirectory, string.Empty, zipOutputStream, _zipCallback);
            }
            else if (File.Exists(fileOrDirectory))
            {
                result = ZipFile(fileOrDirectory, string.Empty, zipOutputStream, _zipCallback);
            }

            if (!result)
            {
                if (null != _zipCallback)
                {
                    _zipCallback.OnFinished(false);
                }

                return(false);
            }
        }

        zipOutputStream.Finish();
        zipOutputStream.Close();

        if (null != _zipCallback)
        {
            _zipCallback.OnFinished(true);
        }

        return(true);
    }
コード例 #2
0
        /// <summary>
        /// 压缩文件和文件夹;
        /// </summary>
        /// <param name="fileOrDirectoryArray">文件夹路径和文件名</param>
        /// <param name="outputPathName">压缩后的输出路径文件名</param>
        /// <param name="password">压缩密码</param>
        /// <param name="zipCallback">ZipCallback对象,负责回调</param>
        /// <returns></returns>
        public static bool Zip(string[] fileOrDirectoryArray, string outputPathName,
                               string password = null, ZipCallback zipCallback = null)
        {
            if ((null == fileOrDirectoryArray) || string.IsNullOrEmpty(outputPathName))
            {
                if (null != zipCallback)
                {
                    zipCallback.OnFinished(false);
                }

                return(false);
            }

            var zipOutputStream = new ZipOutputStream(File.Create(outputPathName));

            zipOutputStream.SetLevel(6);    // 压缩质量和压缩速度的平衡点;
            if (!string.IsNullOrEmpty(password))
            {
                zipOutputStream.Password = password;
            }

            for (var index = 0; index < fileOrDirectoryArray.Length; ++index)
            {
                var result          = false;
                var fileOrDirectory = fileOrDirectoryArray[index];
                if (Directory.Exists(fileOrDirectory))
                {
                    result = ZipDirectory(fileOrDirectory, string.Empty, zipOutputStream, zipCallback);
                }
                else if (File.Exists(fileOrDirectory))
                {
                    result = ZipFile(fileOrDirectory, string.Empty, zipOutputStream, zipCallback);
                }
                if (!result)
                {
                    if (null != zipCallback)
                    {
                        zipCallback.OnFinished(false);
                    }

                    return(false);
                }
            }

            zipOutputStream.Finish();
            zipOutputStream.Close();

            if (null != zipCallback)
            {
                zipCallback.OnFinished(true);
            }

            return(true);
        }
コード例 #3
0
    //压缩文件和文件夹
    public static bool Zip(string[] pFileOrDirArray,    //需要压缩的文件和文件夹
                           string pZipFilePath,         //输出的zip文件完整路径
                           string pPassword = null,     //密码
                           ZipCallback pCB  = null,     //回调
                           int pZipLevel    = 6)        //压缩等级
    {
        if (null == pFileOrDirArray || string.IsNullOrEmpty(pZipFilePath))
        {
            pCB?.OnFinished(false);
            return(false);
        }

        var zipOutputStream = new ZipOutputStream(File.Create(pZipFilePath));

        zipOutputStream.SetLevel(pZipLevel); // 6 压缩质量和压缩速度的平衡点
        zipOutputStream.Password = pPassword;

        foreach (string fileOrDirectory in pFileOrDirArray)
        {
            var result = false;

            if (Directory.Exists(fileOrDirectory))
            {
                result = ZipDirectory(fileOrDirectory, string.Empty, zipOutputStream, pCB);
            }
            else if (File.Exists(fileOrDirectory))
            {
                result = ZipFile(fileOrDirectory, string.Empty, zipOutputStream, pCB);
            }

            if (!result)
            {
                GC.Collect();
                pCB?.OnFinished(false);
                return(false);
            }
        }

        zipOutputStream.Finish();
        zipOutputStream.Close();
        zipOutputStream = null;

        GC.Collect();
        pCB?.OnFinished(true);
        return(true);
    }