用SharpZipLib库如何压缩、解压缩一个目录?那位高手近来指点一下,谢谢。

解决方案 »

  1.   

    /// <summary>
    /// 解压指定的zip文件
    /// </summary>
    /// <param name="filename">文件全路径名称</param>
    /// <param name="targetPath">解压后文件保存的路径名全称,必须带 “\”</param>
    public static void GetZipEntry(string filename,string targetPath)
    {
    // 创建读取Zip文件对象
    ZipInputStream zos = new ZipInputStream(File.OpenRead(filename));
    // Zip文件中的每一个文件
    ZipEntry theEntry;
    // 循环读取Zip文件中的每一个文件
    while ((theEntry = zos.GetNextEntry()) != null) 
    {            
    string directoryName = targetPath;
    string fileName      = Path.GetFileName(theEntry.Name);
                
    // create directory
    if(!Directory.Exists(directoryName))
    Directory.CreateDirectory(directoryName);
                
    if (fileName != String.Empty) 
    {
    // 解压文件
    FileStream streamWriter = File.Open(directoryName + fileName,FileMode.Create);
                   
    int size = 2048;
    byte[] data = new byte[2048];
    while (true) 
    {
    // 写入数据
    size = zos.Read(data, 0, data.Length);
    if (size > 0) 
    {
    streamWriter.Write(data, 0, size);

    else 
    {
    break;                            }
    }
                    
    streamWriter.Close();
    }
    }
    zos.Close();
    }
      

  2.   

    楼上的,得改写SharpZipLib吗?不用这么麻烦吧?
      

  3.   

    学习ing
    或许你可以这样做, 输入目录
    轮询目录
    一个文件一个文件压缩
    把压缩后的byte[]们组织一下
    生成一个记录文件
      

  4.   

    比如说
    文件名 文件内容(byte[]) 这样的格式
      

  5.   

    public static void PackFiles(string filename, string directory)   
    {
    try
    {
    FastZip fz = new FastZip();
    fz.CreateEmptyDirectories = true;
    fz.CreateZip(filename, directory, true, "");
    fz = null;
    }
    catch (Exception)
    {
            throw;
            }
        }