/// <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); }
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); }
/// <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); }
/// <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); }
/// <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); }