把文件解压缩都是有什么算法啊。怎么做啊。c#。谁有调式通过的代码啊。解压缩文件。

解决方案 »

  1.   

    WINRAR的解压缩是开源的。。你到网上找下。。引用动态库就行了
    这是我写的
    /// <summary>
    /// 根据解压文件路径解压文件到临时文件夹(update_temp)中
    /// </summary>
    /// <param name="str_rarFile_path">下载的更新临时文件绝对路径</param>
    /// <param name="str_temp_path">解压后的临时文件夹路径</param>
    /// <returns></returns>
    private bool UnrarFile(string str_rarFile_path,out string str_temp_path)
    {
    str_temp_path = "";
    try
    {
    //创建临时文件夹(update_temp)
    rct_sm.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ==> 正在创建临时文件夹......\n");
    rct_sm.Focus();
    str_temp_path = Application.StartupPath + "\\update_temp";
    //判断临时文件夹是否存在,存在就删除掉
    if(Directory.Exists(str_temp_path))
    {
    DeleteDir_temp(str_temp_path);
    }
    //创建临时文件夹
    Directory.CreateDirectory(str_temp_path);
    rct_sm.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ==> 创建临时文件夹完成!\n");
    rct_sm.Focus();
    rct_sm.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ==> 准备解压文件......\n");
    rct_sm.Focus();
    prgb_jd.Maximum = 1000;
    prgb_jd.Value = 0;
    AttachHandlers(unrar);
    unrar.DestinationPath = str_temp_path;
    unrar.Open(str_rarFile_path,Unrar.OpenMode.Extract);
    while(unrar.ReadHeader())
    {
    prgb_jd.Value=0;
    unrar.Extract();//解压文件
    }
    rct_sm.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ==> 解压文件完成\n");
    rct_sm.Focus();
    return true;
    }
    catch(Exception ex_err)
    {
    MessageBox.Show(ex_err.Message.ToString(),"错误");
    rct_sm.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ==> 解压文件出错,错误:" + ex_err.Message.ToString() + "\n");
    rct_sm.Focus();
    return false;
    }
    finally
    {
    if(this.unrar != null)
    {
    unrar.Close();
    }
    }
    }
      

  2.   

    还有C#下可以引用using ICSharpCode.SharpZipLib.Zip也可进行解压处理