精华内容
下载资源
问答
  • 下面小编就为大家分享一篇C# 解压gizp文件(.tgz)的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • c# 解压zip完整demo 带进度条
  • C#解压文件含空格

    2019-02-24 01:58:57
    含有带有空格压缩名字的解压方式,还有解压两三层压缩包的方法,具体需要根据压缩文件的规则来定
  • C#解压zip文件

    2020-12-31 13:25:26
    因为工作中需要在C#项目中将多张图片一次上传,最近两天一直在研究,网上提供的方法很多,整理了一下,整合出一个方法,需要添加引用 Shell32.dll,可以在Windows\system32中找到它。代码如下:#region 解压zip格式的...

    因为工作中需要在C#项目中将多张图片一次上传,最近两天一直在研究,网上提供的方法很多,整理了一下,整合出一个方法,需要添加引用 Shell32.dll,可以在Windows\system32中找到它。

    代码如下:

    #region 解压zip格式的文件

    ///

    /// 功能:解压zip格式的文件。

    ///

    /// 压缩文件路径

    /// 解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹

    /// 出错信息

    /// 解压是否成功

    public bool UnZipFile(string zipFilePath, string unZipDir, out string err)

    {

    err = "";

    if (zipFilePath.Length == 0)

    {

    err = "压缩文件不能为空!";

    return false;

    }

    else if (!zipFilePath.EndsWith(".zip"))

    {

    err = "文件格式不正确!";

    return false;

    }

    else if (!System.IO.File.Exists(zipFilePath))

    {

    err = "压缩文件不存在!";

    return false;

    }

    //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹

    if (unZipDir.Length == 0)

    unZipDir = zipFilePath.Replace(System.IO.Path.GetFileName(zipFilePath), System.IO.Path.GetFileNameWithoutExtension(zipFilePath));

    if (!unZipDir.EndsWith("\\"))

    unZipDir += "\\";

    if (!System.IO.Directory.Exists(unZipDir))

    System.IO.Directory.CreateDirectory(unZipDir);

    try

    {

    Shell32.ShellClass sc = new Shell32.ShellClass();

    Shell32.Folder SrcFolder = sc.NameSpace(zipFilePath);

    Shell32.Folder DestFolder = sc.NameSpace(unZipDir);

    Shell32.FolderItems items = SrcFolder.Items();

    DestFolder.CopyHere(items, 20);

    }

    catch (Exception ex)

    {

    err = ex.Message;

    return false;

    }

    return true;

    }//解压结束

    #endregion

    展开全文
  • C# 压缩解压文件

    2017-08-07 20:16:48
    C# 压缩解压文件
  • C#解压tar.gz文件

    2021-01-14 13:17:40
    需要依赖dll :ICSharpCode.SharpZipLib.dll using ICSharpCode.SharpZipLib.GZip;... /// 文件解压 /// </summary> /// <param name="zipPath">压缩文件路径</param> /// <par...

    需要依赖dll :ICSharpCode.SharpZipLib.dll

    using ICSharpCode.SharpZipLib.GZip;
    using ICSharpCode.SharpZipLib.Tar;

    /// <summary>
            /// 文件解压
            /// </summary>
            /// <param name="zipPath">压缩文件路径</param>
            /// <param name="goalFolder">解压到的目录</param>
            /// <returns></returns>
            public  bool UnzipTgz(string zipPath, string goalFolder)
            {
                Stream inStream = null;
                Stream gzipStream = null;
                TarArchive tarArchive = null;
                try
                {
                    using (inStream = File.OpenRead(zipPath))
                    {
                        using (gzipStream = new GZipInputStream(inStream))
                        {
                            tarArchive = TarArchive.CreateInputTarArchive(gzipStream);
                            tarArchive.ExtractContents(goalFolder);
                            tarArchive.CloseArchive();
                        }
                    }


                    return true;
                }
                catch (Exception ex)
                {
                    //LogManager.GetCurrentClassLogger().Error(ex);
                    return false;
                }
                finally
                {
                    if (null != tarArchive) tarArchive.CloseArchive();
                    if (null != gzipStream) gzipStream.Close();
                    if (null != inStream) inStream.Close();
                }
            }

     

    解压到指定文件


    using System.IO;
    using System.IO.Compression;

     public void ungzip(string path, string decomPath, bool overwrite)
            {
                if (File.Exists(decomPath))
                { 
                    if (overwrite)
                    {
                        File.Delete(decomPath);
                    }
                    else
                    {  
                        throw new IOException("The decompressed path you specified already exists and cannot be overwritten.");
                    }
                }
                //create our file streams
                GZipStream stream = new GZipStream(new FileStream(path, FileMode.Open, FileAccess.ReadWrite), CompressionMode.Decompress);
                FileStream decompressedFile = new FileStream(decomPath, FileMode.OpenOrCreate, FileAccess.Write); 
                int data;
                while ((data = stream.ReadByte()) != -1) 
                {
                    decompressedFile.WriteByte((byte)data);
                }
                decompressedFile.Close();
                stream.Close();
    
            }

     

    展开全文
  • C#解压ZIP源码

    2017-12-04 10:08:58
    C#自动解压ZIP源码(覆盖原有文件),需指定ZIP路径和解压位置
  • C# 解压zip

    2016-03-02 23:00:29
    C# 解压zip文件,深层解压zip文件,递归
  • C#解压游戏-狂敲键盘

    2018-10-05 16:24:59
    一个C#的小程序,主要熟悉一些语法和事件的操作, 该程序可为一个解压小游戏。
  • C#解压ZIP文件

    2016-06-25 14:52:14
    这是winfrom项目解压实例,不需要电脑安装任何软件,直接快速解压,直接使用。
  • 该方法适应应用桌面快捷键压缩的文件,zip,rar格式的文件进行解压
  • c# 解压7zip

    2021-05-27 14:35:38
    这时需要进行解压,据说C# 4.5以上已经自带解压的库了,因为是老项目是4.0版本的,需要借助第三方库才能完成。因为压缩格式自己定,那当然使用开源的7zip格式。 7zip官网 https://www.7-zip.org/ 使用用 ...

    最近项目需要做一个自动更新功能,即将更新压缩包下载过来,进行解压替换。这时需要进行解压,据说C# 4.5以上已经自带解压的库了,因为是老项目是4.0版本的,需要借助第三方库才能完成。因为压缩格式自己定,那当然使用开源的7zip格式。

    7zip官网  https://www.7-zip.org/

    使用用 SevenZipSharp 

    markhor 创建了SevenZipSharp 项目,SevenZipSharp 是开源的,里面实现了自解压和压缩所有7-ZIP支持的格式.它改进了7-Zip动态链接库的C#接口的一些方法.

    常用压缩/解压缩示例(引自SevenZipSharp示例文件):

    链接:https://pan.baidu.com/s/10dpjXkrguXUzrGgYuPHfpA
    提取码:eb5k
    7z.dll应该是安装了7zip之后生成的,发现360压缩也是使用的7z.dll. 发现SevenZipSharp本身不能解压,而是通过7zip官网上的SDK操作7z.dll来完成。7z.dll不是c#的动态库。

    使用:下载上面的源码并使用VS2010打开,生成 SevenZipSharp.dll

    1.创建项目

      将7z.dll放到执行目录

      引用SevenZipSharp.dll

    2. 开始使用

    解压缩文件
    
    using (SevenZipExtractor tmp = new SevenZipExtractor(@"d:\Temp\7z465_extra.7z")) 
    
    {                
    
         for (int i = 0; i < tmp.ArchiveFileData.Count; i++) 
    
         { 
    
            tmp.ExtractFiles(@"d:\temp\!Пусто\", tmp.ArchiveFileData[i].Index); 
    
         } 
    
         //tmp.ExtractFiles(@"d:\temp\!Пусто\", 1, 3, 5); 
    
    }
    
    分卷压缩
    
    SevenZipExtractor.SetLibraryPath(@"d:\Work\Misc\7zip\9.04\CPP\7zip\Bundles\Format7zF\7z.dll"); 
    
    using (SevenZipExtractor tmp = new SevenZipExtractor(@"d:\Temp\SevenZip.7z.001")) 
    
    {                 
    
        tmp.ExtractArchive(@"d:\Temp\!Пусто"); 
    
    }
    
     
    
     压缩文件
    
    SevenZipCompressor tmp = new SevenZipCompressor();             
    
    tmp.CompressFiles(@"d:\Temp\arch.7z", @"d:\Temp\log.txt"); 
    
    tmp.CompressDirectory(@"c:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\1033", @"D:\Temp\arch.7z");
    
     
    
     
    
    压缩ZIP文件
    
     
    
    SevenZipCompressor tmp = new SevenZipCompressor(); 
    
    tmp.ArchiveFormat = OutArchiveFormat.Zip; 
    
    tmp.CompressFiles(@"d:\Temp\arch.zip", @"d:\Temp\gpl.txt", @"d:\Temp\ru_office.txt");

    参考 https://www.cnblogs.com/jxnclyk/archive/2010/04/03/1703844.html

    展开全文
  • 今天梳理一下项目中用到的压缩、解压文件夹或文件的方法,发现因为需求不同,已经用了好几个不同组件。今天就好好整理记录下,别下次遇到需求又重头开始了。 DotNetZip DotNetZip是一个开源的免费类库,主要提供了...
  • c#解压压缩文件和文件夹

    千次阅读 2016-05-17 10:47:00
    整理了一个静态类,C#操作ZIP的压缩和解压的方法,亲测有效。。。

    在工作中遇到需要用到压缩和解压文件的技术,于是在网上找了很多相关资料和demo,发现有很多不能直接使用,有很多问题,压缩出来的要么是空文件,要门是损坏文件,甚至有些直接编译不通过。综合了多位大牛的资料,我整理测试了一个压缩/解压的类文件,分享给大家。亲测可用~~~~得意

    这里需要添加一个dll引用ICSharpCode.SharpZipLib.dll点这里下载

    需要注意的是这个类只能操作ZIP格式的压缩文件,操作rar格式会有这样的报错:Wrong Local header signature: 0x21726152

    1、下载解压

    2、引用SharpZipLib.dll到项目中,在项目中点击项目右键-->添加引用-->浏览,找到刚解压的ICSharpCode.SharpZipLib.dll-->确认。

    3、增加命名空间的引用。

    <pre name="code" class="csharp"><span style="font-size:18px;">#region 命名空间的引用
    using ICSharpCode.SharpZipLib;
    using ICSharpCode.SharpZipLib.Zip;
    using ICSharpCode.SharpZipLib.Checksums;
    using System.IO; 
    #endregion</span>

     
    
    下面是类文件内容

    <span style="font-size:18px;">public static class DealZip
        {
    
            #region 压缩  
            
            #region 公开压缩方法
            /// <summary>   
            /// 压缩文件或文件夹   ----带密码
            /// </summary>   
            /// <param name="fileToZip">要压缩的路径-文件夹或者文件</param>   
            /// <param name="zipedFile">压缩后的文件名</param>   
            /// <param name="password">密码</param>
            /// <param name="errorOut">如果失败返回失败信息</param>
            /// <returns>压缩结果</returns>   
            public static bool Zip(string fileToZip, string zipedFile, string password, ref string errorOut)
            {
                bool result = false;
                try
                {
                    if (Directory.Exists(fileToZip))
                        result = ZipDirectory(fileToZip, zipedFile, password);
                    else if (File.Exists(fileToZip))
                        result = ZipFile(fileToZip, zipedFile, password);
                }
                catch (Exception ex)
                {
                    errorOut = ex.Message;
                }
                return result;
            }
    
            /// <summary>   
            /// 压缩文件或文件夹 ----无密码 
            /// </summary>   
            /// <param name="fileToZip">要压缩的路径-文件夹或者文件</param>   
            /// <param name="zipedFile">压缩后的文件名</param>
            /// <param name="errorOut">如果失败返回失败信息</param>
            /// <returns>压缩结果</returns>   
            public static bool Zip(string fileToZip, string zipedFile, ref string errorOut)
            {
                bool result = false;
                try
                {
                    if (Directory.Exists(fileToZip))
                        result = ZipDirectory(fileToZip, zipedFile, null);
                    else if (File.Exists(fileToZip))
                        result = ZipFile(fileToZip, zipedFile, null);
                }
                catch (Exception ex)
                {
                    errorOut = ex.Message;
                }
                return result;
            } 
            #endregion
    
            #region 内部处理方法
            /// <summary>   
            /// 压缩文件   
            /// </summary>   
            /// <param name="fileToZip">要压缩的文件全名</param>   
            /// <param name="zipedFile">压缩后的文件名</param>   
            /// <param name="password">密码</param>   
            /// <returns>压缩结果</returns>   
            private static bool ZipFile(string fileToZip, string zipedFile, string password)
            {
                bool result = true;
                ZipOutputStream zipStream = null;
                FileStream fs = null;
                ZipEntry ent = null;
    
                if (!File.Exists(fileToZip))
                    return false;
    
                try
                {
                    fs = File.OpenRead(fileToZip);
                    byte[] buffer = new byte[fs.Length];
                    fs.Read(buffer, 0, buffer.Length);
                    fs.Close();
    
                    fs = File.Create(zipedFile);
                    zipStream = new ZipOutputStream(fs);
                    if (!string.IsNullOrEmpty(password)) zipStream.Password = password;
                    ent = new ZipEntry(Path.GetFileName(fileToZip));
                    zipStream.PutNextEntry(ent);
                    zipStream.SetLevel(6);
    
                    zipStream.Write(buffer, 0, buffer.Length);
    
                }
                catch (Exception ex)
                {
                    result = false;
                    throw ex;
                }
                finally
                {
                    if (zipStream != null)
                    {
                        zipStream.Finish();
                        zipStream.Close();
                    }
                    if (ent != null)
                    {
                        ent = null;
                    }
                    if (fs != null)
                    {
                        fs.Close();
                        fs.Dispose();
                    }
                }
                GC.Collect();
                GC.Collect(1);
    
                return result;
            }
    
            /// <summary>
            /// 压缩文件夹
            /// </summary>
            /// <param name="strFile">带压缩的文件夹目录</param>
            /// <param name="strZip">压缩后的文件名</param>
            /// <param name="password">压缩密码</param>
            /// <returns>是否压缩成功</returns>
            private static bool ZipDirectory(string strFile, string strZip, string password)
            {
                bool result = false;
                if (!Directory.Exists(strFile)) return false;
                if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar)
                    strFile += Path.DirectorySeparatorChar;
                ZipOutputStream s = new ZipOutputStream(File.Create(strZip));
                s.SetLevel(6); // 0 - store only to 9 - means best compression
                if (!string.IsNullOrEmpty(password)) s.Password = password;
                try
                {
                    result = zip(strFile, s, strFile);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    s.Finish();
                    s.Close();
                }
                return result;
            }
    
            /// <summary>
            /// 压缩文件夹内部方法
            /// </summary>
            /// <param name="strFile"></param>
            /// <param name="s"></param>
            /// <param name="staticFile"></param>
            /// <returns></returns>
            private static bool zip(string strFile, ZipOutputStream s, string staticFile)
            {
                bool result = true;
                if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar) strFile += Path.DirectorySeparatorChar;
                Crc32 crc = new Crc32();
                try
                {
                    string[] filenames = Directory.GetFileSystemEntries(strFile);
                    foreach (string file in filenames)
                    {
    
                        if (Directory.Exists(file))
                        {
                            zip(file, s, staticFile);
                        }
    
                        else // 否则直接压缩文件
                        {
                            //打开压缩文件
                            FileStream fs = File.OpenRead(file);
    
                            byte[] buffer = new byte[fs.Length];
                            fs.Read(buffer, 0, buffer.Length);
                            string tempfile = file.Substring(staticFile.LastIndexOf("\\") + 1);
                            ZipEntry entry = new ZipEntry(tempfile);
    
                            entry.DateTime = DateTime.Now;
                            entry.Size = fs.Length;
                            fs.Close();
                            crc.Reset();
                            crc.Update(buffer);
                            entry.Crc = crc.Value;
                            s.PutNextEntry(entry);
    
                            s.Write(buffer, 0, buffer.Length);
                        }
                    }
                }
                catch (Exception ex)
                {
                    result = false;
                    throw ex;
                }
                return result;
    
            }
            #endregion
    
            #endregion
    
    
            #region 解压  
    
            #region 公开解压方法
            /// <summary>   
            /// 解压功能(解压压缩文件到指定目录)---->不需要密码
            /// </summary>   
            /// <param name="fileToUnZip">待解压的文件</param>   
            /// <param name="zipedFolder">指定解压目标目录</param>  
            /// <param name="errorOut">如果失败返回失败信息</param> 
            /// <returns>解压结果</returns>   
            public static bool UPZipFile(string fileToUnZip, string zipedFolder, ref string errorOut)
            {
                bool result = false;
                try
                {
                    result = UPZipFileByPassword(fileToUnZip, zipedFolder, null);
                }
                catch (Exception ex)
                {
                    errorOut = ex.Message;
                }
                return result;
            }
            /// <summary>   
            /// 解压功能(解压压缩文件到指定目录)---->需要密码
            /// </summary>   
            /// <param name="fileToUnZip">待解压的文件</param>   
            /// <param name="zipedFolder">指定解压目标目录</param>
            /// <param name="password">密码</param> 
            /// <param name="errorOut">如果失败返回失败信息</param> 
            /// <returns>解压结果</returns>
            public static bool UPZipFile(string fileToUnZip, string zipedFolder, string password, ref string errorOut)
            {
                bool result = false;
                try
                {
                    result = UPZipFileByPassword(fileToUnZip, zipedFolder, password);
                }
                catch (Exception ex)
                {
                    errorOut = ex.Message;
                }
    
                return result;
            }
            #endregion
    
            #region 内部处理方法
            /// <summary>
            /// 解压功能 内部处理方法
            /// </summary>
            /// <param name="TargetFile">待解压的文件</param>
            /// <param name="fileDir">指定解压目标目录</param>
            /// <param name="password">密码</param>
            /// <returns>成功返回true</returns>
            private static bool UPZipFileByPassword(string TargetFile, string fileDir, string password)
            {
                bool rootFile = true;
                try
                {
                    //读取压缩文件(zip文件),准备解压缩
                    ZipInputStream zipStream = new ZipInputStream(File.OpenRead(TargetFile.Trim()));
                    ZipEntry theEntry;
                    string path = fileDir;
    
                    string rootDir = " ";
                    if (!string.IsNullOrEmpty(password)) zipStream.Password = password;
                    while ((theEntry = zipStream.GetNextEntry()) != null)
                    {
                        rootDir = Path.GetDirectoryName(theEntry.Name);
                        if (rootDir.IndexOf("\\") >= 0)
                        {
                            rootDir = rootDir.Substring(0, rootDir.IndexOf("\\") + 1);
                        }
                        string dir = Path.GetDirectoryName(theEntry.Name);
                        string fileName = Path.GetFileName(theEntry.Name);
                        if (dir != " ")
                        {
                            if (!Directory.Exists(fileDir + "\\" + dir))
                            {
                                path = fileDir + "\\" + dir;
                                Directory.CreateDirectory(path);
                            }
                        }
                        else if (dir == " " && fileName != "")
                        {
                            path = fileDir;
                        }
                        else if (dir != " " && fileName != "")
                        {
                            if (dir.IndexOf("\\") > 0)
                            {
                                path = fileDir + "\\" + dir;
                            }
                        }
    
                        if (dir == rootDir)
                        {
                            path = fileDir + "\\" + rootDir;
                        }
    
                        //以下为解压缩zip文件的基本步骤
                        //基本思路就是遍历压缩文件里的所有文件,创建一个相同的文件。
                        if (fileName != String.Empty)
                        {
                            FileStream streamWriter = File.Create(path + "\\" + fileName);
    
                            int size = 2048;
                            byte[] data = new byte[2048];
                            while (true)
                            {
                                size = zipStream.Read(data, 0, data.Length);
                                if (size > 0)
                                {
                                    streamWriter.Write(data, 0, size);
                                }
                                else
                                {
                                    break;
                                }
                            }
    
                            streamWriter.Close();
                        }
                    }
                    if (theEntry != null)
                    {
                        theEntry = null;
                    }
                    if (zipStream != null)
                    {
                        zipStream.Close();
                    }
                }
                catch (Exception ex)
                {
                    rootFile = false;
                    throw ex;
                }
                finally
                {
                    GC.Collect();
                    GC.Collect(1);
                }
                return rootFile;
            }
            #endregion
    
            
            #endregion
        }</span>



    类文件下载: DealZip

    参考文章:http://www.cnblogs.com/sunyaling/archive/2009/04/13/1434602.html

    http://blog.csdn.net/cleopard/article/details/42156393




    展开全文
  • C# 解压RAR压缩文件

    2020-12-23 12:49:52
    此方法适用于C盘windows文件夹中有WinRAR.exe文件/// 解压文件(不带密码) RAR压缩程序 返回解压出来的文件数量/// /// 解压至目录/// 压缩文件路径public static int RARToFileEmail(string destPath, string ...
  • C#winform写的压缩文件夹和解压文件夹,简洁方便,代码易懂
  • C#实现winform压缩解压文件夹
  • C# 解压zip压缩文件

    2020-12-23 09:06:41
    此方法需要在程序内引用ICSharpCode.SharpZipLib.dll 类库/// /// 功能:解压zip格式的文件。/// /// 压缩文件路径/// 解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹/// 出错信息/// ...
  • c# 解压,frp,kafka,zookeeper集成 c# winform 执行解压程序界面阻塞,使用线程和委托解压,避免画面卡死
  • c# 解压 处理.tar.gz文件

    千次阅读 2016-11-16 17:57:33
    首先 tar是把文件打成一个包,并不压缩;...先 在ICSharpCode.SharpZipLib.GZip 中的方法解压为tar文件包, ///////////  var targzpath="xxx/xxx/xxx.tar.gz";  GZipInputStream gzs = new GZipInp
  • C#解压GZ文件

    千次阅读 2016-04-12 15:14:31
    public void ungzip(string path, string decomPath, bool overwrite) { //for overwriting purposes if (File.Exists(decomPath)) { if (overwrite)
  • vs 2010 c# 解压文件 例子
  • 本文介绍C#实现压缩与解压缩帮助类ZipHelper,主要是通过ICSharpCode.SharpZipLib 类库实现的。
  • 从别的地方转载的,挺不错的!
  • C# 压缩解压ZIP

    2018-11-04 18:16:39
    C#代码写的压缩解压ZIP,不需要第三方支持,测试通过。
  • C# 压缩解压缩

    2019-04-10 14:32:38
    C# 压缩解压缩,其中包含了通过递归的方式对文件夹进行压缩及解压缩操作
  • 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。。 其原因是所解压的文件并非 zip 文件。 本文内容异常原因 异常 在解压 Zip 文件时出现异常: System.IO....
  • 给现有的.Net项目增加安卓平台客户端, 目前使用的 ComponentAce.Compression.Libs.zlib 压缩解压字节流C#代码片段:...ZOutputStream outZStream = new ZOutputStream(outStream);CopyStream(inStream,outZStream);.....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,828
精华内容 11,931
关键字:

c#解压

c# 订阅