Пример #1
0
        /// <summary>
        /// 制作压缩包(单个文件压缩)
        /// </summary>
        /// <param name="sourceFileName">原文件</param>
        /// <param name="zipFileName">压缩文件</param>
        /// <param name="zipEnum">压缩算法枚举</param>
        /// <returns>压缩成功标志</returns>
        public static bool ZipFile(string srcFileName, string zipFileName, ZipEnum zipEnum, ref Exception e)
        {
            bool     flag = true;
            ZipEntry ent  = null;

            try
            {
                switch (zipEnum)
                {
                case ZipEnum.BZIP2:

                    FileStream inStream  = File.OpenRead(srcFileName);
                    FileStream outStream = File.Open(zipFileName, FileMode.Create);

                    //参数true表示压缩完成后,inStream和outStream连接都释放
                    BZip2.Compress(inStream, outStream, true, 4096);

                    inStream.Close();
                    outStream.Close();


                    break;

                case ZipEnum.GZIP:
                {
                    string strDirecory = zipFileName.Substring(0, zipFileName.LastIndexOf('\\'));
                    if (!Directory.Exists(strDirecory))
                    {
                        Directory.CreateDirectory(strDirecory);
                    }

                    FileStream srcFile = File.OpenRead(srcFileName);

                    ZipOutputStream zipFile  = new ZipOutputStream(File.Open(zipFileName, FileMode.Create));
                    byte[]          fileData = new byte[srcFile.Length];
                    srcFile.Read(fileData, 0, (int)srcFile.Length);
                    ent = new ZipEntry(Path.GetFileName(srcFileName));
                    zipFile.PutNextEntry(ent);
                    zipFile.SetLevel(6);
                    zipFile.Write(fileData, 0, fileData.Length);

                    srcFile.Close();
                    zipFile.Close();
                }

                break;

                default: break;
                }
            }
            catch (Exception ex)
            {
                e    = ex;
                flag = false;
            }
            return(flag);
        }
Пример #2
0
        public static bool UnZipFile(string zipFileName, string srcFileName, ZipEnum zipEnum)
        {
            var ret = true;

            try
            {
                switch (zipEnum)
                {
                case ZipEnum.BZIP2:

                    var inFile  = File.OpenRead(zipFileName);
                    var outFile = File.Open(srcFileName, FileMode.Create);

                    BZip2.Decompress(inFile, outFile, true);

                    inFile.Close();
                    outFile.Close();

                    break;

                case ZipEnum.GZIP:

                    var srcFile = File.Open(srcFileName, FileMode.Create);
                    var zipFile = new GZipInputStream(File.OpenRead(zipFileName));

                    int    buffersize = 2048;                 //设置缓冲区大小
                    byte[] fileData   = new byte[buffersize]; //创建缓冲数据

                    while (buffersize > 0)                    //一直读取到文件末尾
                    {
                        buffersize = zipFile.Read(fileData, 0, buffersize);
                        srcFile.Write(fileData, 0, buffersize);    //写入目标文件
                    }


                    srcFile.Close();
                    zipFile.Close();

                    break;

                default: break;
                }
            }
            catch (Exception)
            {
                ret = false;
                throw;
            }

            return(ret);
        }
Пример #3
0
        /// <summary>
        /// 制作压缩包(单个文件压缩)
        /// </summary>
        /// <param name="srcFileName">原文件</param>
        /// <param name="zipFileName">压缩文件</param>
        /// <param name="zipEnum">压缩算法枚举</param>
        /// <returns>压缩成功标志</returns>
        public static bool ZipFile(string srcFileName, string zipFileName, ZipEnum zipEnum)
        {
            bool flag = true;

            try
            {
                switch (zipEnum)
                {
                case ZipEnum.BZIP2:

                    FileStream inStream  = File.OpenRead(srcFileName);
                    FileStream outStream = File.Open(zipFileName, FileMode.Create);

                    //参数true表示压缩完成后,inStream和outStream连接都释放
                    BZip2.Compress(inStream, outStream, 4096);

                    inStream.Close();
                    outStream.Close();


                    break;

                case ZipEnum.GZIP:

                    FileStream srcFile = File.OpenRead(srcFileName);

                    GZipOutputStream zipFile = new GZipOutputStream(File.Open(zipFileName, FileMode.Create));

                    byte[] fileData = new byte[srcFile.Length];
                    srcFile.Read(fileData, 0, (int)srcFile.Length);
                    zipFile.Write(fileData, 0, fileData.Length);

                    srcFile.Close();
                    zipFile.Close();

                    break;

                default: break;
                }
            }
            catch
            {
                flag = false;
            }
            return(flag);
        }
Пример #4
0
        /// <summary>
        /// 解压缩包(单个文件解压缩)
        /// </summary>
        /// <param name="zipFileName">压缩文件</param>
        /// <param name="unzipFileName">解压缩文件</param>
        /// <param name="zipEnum">压缩算法枚举</param>
        /// <returns>压缩成功标志</returns>
        public static bool UnZipFile(string zipFileName, string unzipFileName, ZipEnum zipEnum)
        {
            bool flag = true;

            try
            {
                switch (zipEnum)
                {
                case ZipEnum.BZIP2:
                    using (FileStream inStream = File.OpenRead(zipFileName))
                        using (FileStream outStream = File.Open(unzipFileName, FileMode.Create))
                        {
                            BZip2.Decompress(inStream, outStream, true);
                        }
                    break;

                case ZipEnum.GZIP:
                    using (GZipInputStream zipFile = new GZipInputStream(File.OpenRead(zipFileName)))
                        using (FileStream destFile = File.Open(unzipFileName, FileMode.Create))
                        {
                            int    bufferSize = 2048 * 2;
                            byte[] fileData   = new byte[bufferSize];

                            while (bufferSize > 0)
                            {
                                bufferSize = zipFile.Read(fileData, 0, bufferSize);
                                destFile.Write(fileData, 0, bufferSize);
                            }
                        }
                    break;

                default: break;
                }
            }
            catch
            {
                flag = false;
            }
            return(flag);
        }
Пример #5
0
        /// <summary>
        /// 制作压缩包(单个文件压缩)
        /// </summary>
        /// <param name="sourceFileName">原文件</param>
        /// <param name="zipFileName">压缩文件</param>
        /// <param name="zipEnum">压缩算法枚举</param>
        /// <returns>压缩成功标志</returns>
        public static bool ZipFile(string srcFileName, string zipFileName, ZipEnum zipEnum)
        {
            bool flag = true;

            try
            {
                switch (zipEnum)
                {
                case ZipEnum.BZIP2:

                    using (FileStream inStream = File.OpenRead(srcFileName))
                        using (FileStream outStream = File.Open(zipFileName, FileMode.Create))
                        {
                            //参数true表示压缩完成后,inStream和outStream连接都释放
                            BZip2.Compress(inStream, outStream, true, 4096);
                        }
                    break;

                case ZipEnum.GZIP:

                    using (FileStream srcFile = File.OpenRead(srcFileName))
                        using (GZipOutputStream zipFile = new GZipOutputStream(File.Open(zipFileName, FileMode.Create)))
                        {
                            byte[] fileData = new byte[srcFile.Length];
                            srcFile.Read(fileData, 0, (int)srcFile.Length);
                            zipFile.Write(fileData, 0, fileData.Length);
                            zipFile.Flush();
                        }
                    break;

                default: break;
                }
            }
            catch (Exception er)
            {
                Console.WriteLine(er.ToString());
                flag = false;
            }
            return(flag);
        }