C#使用SharpZipLib类库压缩、解压缩单个文件

GY3509 2024-06-17 17:40:36

C#使用SharpZipLib类库压缩、解压缩单个文件    https://www.cnblogs.com/xiaopohou/archive/2011/08/26/2155178.html

C#使用SharpZipLib类库压缩、解压缩单个文件,废话不说了,直接看代码吧,

类库下载地址:http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx

/// <summary>
/// 使用SharpZipLib压缩Zip文件
/// </summary>
/// <param name="srcFile">源文件</param>
/// <param name="dstFile">压缩后的Zip文件</param>
/// <param name="bufferSize">缓冲大小</param>
public static void Zip(string srcFile, string dstFile, int bufferSize)
{
    using (FileStream fileStreamIn = new FileStream(srcFile, FileMode.Open, FileAccess.Read))
    {
        using (FileStream fileStreamOut = new FileStream(dstFile, FileMode.Create, FileAccess.Write))
        {
            using (ZipOutputStream zipOutStream = new ZipOutputStream(fileStreamOut))
            {
                byte[] buffer = new byte[bufferSize];
                ZipEntry entry = new ZipEntry(Path.GetFileName(srcFile));
                zipOutStream.PutNextEntry(entry);
                int size;
                do
                {
                    size = fileStreamIn.Read(buffer, 0, buffer.Length);
                    zipOutStream.Write(buffer, 0, size);
                } while (size > 0);
                zipOutStream.Flush();
            }
        }
    }
}
  
/// <summary>
/// 使用SharpZipLib解压缩Zip文件
/// </summary>
/// <param name="srcFile">Zip源文件</param>
/// <param name="dstFile">解压出来的文件</param>
/// <param name="bufferSize">缓冲大小</param>
public static void UnZip(string srcFile, string dstFile, int bufferSize)
{
    using (FileStream fileStreamIn = new FileStream(srcFile, FileMode.Open, FileAccess.Read))
    {
        using (ZipInputStream zipInStream = new ZipInputStream(fileStreamIn))
        {
            ZipEntry entry = zipInStream.GetNextEntry();
            using (FileStream fileStreamOut = new FileStream(dstFile + @"\" + entry.Name, FileMode.Create, FileAccess.Write))
            {
                int size;
                byte[] buffer = new byte[bufferSize];
                do
                {
                    size = zipInStream.Read(buffer, 0, buffer.Length);
                    fileStreamOut.Write(buffer, 0, size);
                } while (size > 0);
                fileStreamOut.Flush();
            }
        }
    }
}
  
/// <summary>
/// 测试Zip文件是否完整
/// </summary>
/// <param name="srcFile">Zip源文件</param>
/// <returns></returns>
public static bool Test(string srcFile)
{
    bool flag = false;
    using (ZipFile zf = new ZipFile(srcFile))
    {
        flag = zf.TestArchive(true);
    }
    return flag;
}

 

...全文
137 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,820

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧