SharpCompress压缩和解压缩,并解决压缩的中文乱码问题

摘要:
1、 下载SharpCompress Library II解压(1),无需密码///<summary˃///解压(支持rar,zip)///</summary˃///<paramname=“fromFilePath”>提取文件后要提取的文件的完整路径//˂paramname=“outFileDirectory”>目录publicstatic void解压(stringfr

一.下载SharpCompress库

SharpCompress压缩和解压缩,并解决压缩的中文乱码问题第1张

二.解压缩

(1)不带密码

        /// <summary>
        /// 解压缩(支持rar,zip)
        /// </summary>
        /// <param name="fromFilePath">待解压文件全路径</param>
        /// <param name="outFileDirectory">解压文件后目录</param>
        public static void Decompress(string fromFilePath, string outFileDirectory)
        {
            var archive = ArchiveFactory.Open(fromFilePath);
            foreach (var entry in archive.Entries)
            {
                if (!entry.IsDirectory)
                {
                    //Debug.WriteLine(entry.Key);
                    entry.WriteToDirectory(outFileDirectory, new ExtractionOptions { ExtractFullPath = true, Overwrite = true });
                }
            }
        }

(2)带密码

        /// <summary>
        /// 解压缩加密的包(支持rar,zip)
        /// </summary>
        /// <param name="fromFilePath">待解压文件全路径</param>
        /// <param name="outFileDirectory">解压文件后目录</param>
        /// <param name="password">密码</param>
        public static void DecompressWithPwd(string fromFilePath, string outFileDirectory, string password)
        {
            using (var archive = ArchiveFactory.Open(fromFilePath, new ReaderOptions { Password = password }))
            {
                foreach (var entry in archive.Entries)
                {
                    if (!entry.IsDirectory)
                    {
                        //Debug.WriteLine(entry.Key);
                        entry.WriteToDirectory(outFileDirectory, new ExtractionOptions { ExtractFullPath = true, Overwrite = true });
                    }
                }
            }
        }

三.压缩

 /// <summary>
        /// 压缩(zip格式)
        /// </summary>
        /// <param name="fromFileDirectory">待压缩目录</param>
        /// <param name="outFilePath">压缩后文全件路径</param>
        public static void ZipCompress(string fromFileDirectory, string outFilePath)
        {
            //解决中文乱码问题
            SharpCompress.Common.ArchiveEncoding ArchiveEncoding = new SharpCompress.Common.ArchiveEncoding();
            ArchiveEncoding.Default = Encoding.GetEncoding("utf-8");
            SharpCompress.Writers.WriterOptions options = new SharpCompress.Writers.WriterOptions(CompressionType.Deflate);
            options.ArchiveEncoding = ArchiveEncoding;

            using (var archive = ZipArchive.Create())
            {
                archive.AddAllFromDirectory(fromFileDirectory);
                using (var zip = File.OpenWrite(outFilePath))
                    archive.SaveTo(zip, options);
            }
        }

  

四.调用

//压缩
string fromFileDirectory = @"C:	est我是目录";
string outFilePath = @"C:压缩包1.zip";
CompressHelper.ZipCompress(fromFileDirectory, outFilePath);

//解压缩
string fromFilePath = @"C:压缩包1.zip";
string outFileDirectory = @"C:解压目录压缩包1";
CompressHelper.Decompress(fromFilePath, outFileDirectory);

  

五.中文乱码问题

老版本直接加入下面一行代码就可以了

SharpCompress.Common.ArchiveEncoding.Default = Encoding.GetEncoding ("utf-8");

但是我使用的是0.23.0版本,.ArchiveEncoding已经从静态类改为普通类了,无法这样调用

参考:https://github.com/adamhathcock/sharpcompress/issues/268

SharpCompress压缩和解压缩,并解决压缩的中文乱码问题第2张

 最后发现:ArchiveEncoding类是OptionsBase的属性,而OptionsBase是WriterOptions的基类,ZipArchive的SaveTo方法带WriterOptions参数,那就ok了

参考:

wiki:https://github.com/adamhathcock/sharpcompress/wiki/API-Examples

支持类型:https://github.com/adamhathcock/sharpcompress/wiki/Supported-Formats

免责声明:文章转载自《SharpCompress压缩和解压缩,并解决压缩的中文乱码问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用adb命令通过IP地址连接手机openssl 学习之从证书中提取RSA公钥N 和 E下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【Linux】【二】linux 压缩文件(txt)、查看压缩文件内容、解压缩文件、

通过Xshell 压缩文件、解压缩文件 gzip  tools.txt        压缩【tools.txt】文件 zcat  tools.txt.gz        查看压缩文件【tools.txt.gz】内容 gunzip  tools.txt.gz      解压文件【tools.txt.gz】 cat  tools.txt         查看...

Linux 中如何卸载已安装的软件

Linux 中如何卸载已安装的软件.   Linux软件的安装和卸载一直是困扰许多新用户的难题。在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实现。与其相类似,在Linux下有一个功能强大的软件安装卸载工具,名为RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具是在命令行下使用的。在Shell的提示符...

[转]ubuntu下解压zip文件

1.功能作用:解压缩zip文件2.位置:/usr/bin/unzip3.格式用法:unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]4.主要参数    -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换    -p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不...

在C#中利用SharpZipLib进行文件的压缩和解压缩收藏

我在做项目的时候需要将文件进行压缩和解压缩,于是就从http://www.icsharpcode.net(http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx)下载了关于压缩和解压缩的源码,但是下载下来后,面对这么多的代码,一时不知如何下手。只好耐下心来,慢慢的研究,总算找到了门路。...

提取PPT文件中的Vba ProjectStg Compressed Atom。Extract PPT VBA Compress Stream

http://msdn.microsoft.com/en-us/library/cc313106(v=office.12).aspx 微软文档 PartI ****************************************************************************** 简单讲一下如何找到VbaProjectStg...

Linux下的压缩和解压缩命令gzip/gunzip

作者:邓聪聪 Linux下的压缩和解压缩命令——gzip/gunzip yum -y install zip gzip (--安装压缩工具) gzip命令 gzip命令用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。 gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又...