目前主流的压缩文件操作类,除了C#原生的。还有

1. ZIP-DotNetZip

网址:http://dotnetzip.codeplex.com/

2 7Zip-SevenZipSharp

网址:http://sevenzipsharp.codeplex.com/

支持的格式比上面多,如:7Zip,RAR,ZIP,Gzip,Cab,LZH等等。注意,除了引用这个组件之外,还需要加7z.dll文件拷贝到bin目录中,因为SevenZipSharp是对7z.dll的一个封装。

3 综合-SharpCompress

网址:http://sharpcompress.codeplex.com/

支持的格式更多,如RAR,ZIP,Tar,7Zip等等。这个开源项目好像是去年才开始的,在其他几个开源的项目基础上发展而来,也包括了DotNetZipNunrar项目。当然对RAR也只是解压.

中文支持问题:

推荐:SevenZipSharp

1.速度快。

2.支持中文,不会有乱码。

3.接口类定义明确,实用。

SharpCompress 对中文支持不好。

原因:在使用BinaryReader时,SharpCompress 会读取文件的Header的编码,没有时 默认使用UTF-8的读取。造成乱码文件。

但同时也有解决方案。(不建议修改SharpCompress的源码)。

只需要在调用前 修改下 SharpCompress的编码方式.

public static void Reader(string filePath)
{
using (Stream stream = File.OpenRead(filePath))
{
//设置编码为 Default
SharpCompress.Common.ArchiveEncoding.Default = System.Text.Encoding.Default;
var reader = ReaderFactory.Open(stream); while (reader.MoveToNextEntry())
{
Console.WriteLine("测试");
}
}
}

 但相比较而言,性能还是没有SevenZipSharp好,所以还是推荐SevenZipSharp。

后记:SevenZipSharp的怪现象

使用framework 4.5 编译时  会报can't load  7z.dll  failed to load library。

将项目 改为4.0 后 再运行OK了,再改为 4.5  又不报错了。

内部运行代码 NativeMethods.cs

[DllImport("kernel32.dll", BestFitMapping = false, ThrowOnUnmappableChar = true)]
public static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)] string fileName);

推荐文章:http://www.cnblogs.com/asxinyu/archive/2013/03/05/2943696.html

C# 读取压缩文件方式及乱码处理的更多相关文章

  1. 读取Properties文件以及中文乱码问题

    在java类中常见的读取Properties文件方式,是使用Properties.load(inputStream);的方式但是常常出现中文乱码问题,这就很尴尬了 public synchronize ...

  2. Java学习笔记之I/O流(读取压缩文件以及压缩文件)

    1.读取压缩文件:ZipInputStream 借助ZipFile类的getInputStream方法得到压缩文件的指定项的内容,然后传递给InputStreamReader类的构造方法,返回给Buf ...

  3. springBoot使用@Value标签读取*.properties文件的中文乱码问题

    上次我碰到获取properties文件中的中文出现乱码问题. 查了下资料,原来properties默认的字符编码格式为asci码,所以我们要对字符编码进行转换成UTF-8格式 原先代码:@Proper ...

  4. perl 利用管道读取压缩文件内容

    perl的文件句柄不仅支持普通文件, 还支持管道,今天需要统计一个fastq文件中的序列数和碱基数,而NGS的fastq文件一般都是gzip压缩的,所以 需要读取压缩文件中的内容,代码如下: my ( ...

  5. cocos2dx中调用TinyXml读取xml配置文件 || cocos2d-x 中跨平台tinyxml读取xml文件方式

    TiXmlDocument *doc = newTiXmlDocument; #if (CC_TARGET_PLATFORM ==CC_PLATFORM_ANDROID) //Android平台tin ...

  6. springboot 入门三- 读取配置信息二(读取属性文件方式)

    在上篇文章中简单介绍自带读取方式.springboot提供多种方式来读取 一.@ConfigurationProperties(value="my") 支持更灵活的绑定及元数据的支 ...

  7. iOS zipzap读取压缩文件

    最近在公司遇到一项需求,在不解压zip文件的情况下读取其中的文件,因为之前使用的ziparchive不能满足现在的需求,所以在网上一阵狂搜,终于找到了zipzap,实话说还真的难找. 之前读取本地zi ...

  8. Java读取压缩文件信息

    不解压压缩文件,获取其中包含的文件,通过文件名检查是否包含非法文件.(后续再根据文件头或内容吧) zip: import java.util.zip.ZipEntry;import java.util ...

  9. spring使用@Value标签读取.properties文件的中文乱码问题的解决

    最近测试某个老系统的时候,启动的时候发@Value注入的中文是乱码,文件使用GBK/UTF-8的时候均会出现乱码问题,但是spring配置文件里面注入的占位符并没有这个问题,bean文件设置了file ...

随机推荐

  1. php学习第一讲----php是什么?

    前言:不要在冲动的情况下做任何决定 ——————————————————————————————————————————————————————---- 一.学php之前的一些需要了解的知识 (1)网 ...

  2. 在ArcGIS空间数据库中增加点数据的方法

    1.新建一个mxd(ArcMAP)文件 2.从ArcCatalog中把要编辑的图层拖到ArcMAP中 3.从ArcCatalog中拖一个参照图层到ArcMAP中,比如临沂市的县级区划图 4.打开Edi ...

  3. SQL Server 内存中OLTP内部机制概述(四)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...

  4. nmap端口状态解析

    nmap端口状态解析 状态 说明 open 应用程序在该端口接收 TCP 连接或者 UDP 报文 closed 关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应.但没有应用程序在 ...

  5. HTTP请求报文和HTTP响应报文(转)

    原文地址:http://blog.csdn.net/zhangliang_571/article/details/23508953 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串, ...

  6. 比较好的文件复制工具fastcopy和校验工具

    fastcopy http://ipmsg.org/tools/fastcopy.html.en extractfile --可以选用ADLER32计算模式,更快速.

  7. linux下的依赖关系

    1.一般来说依赖关系可以使得软件较小并且某个lib修复bug以后所有被依赖的软件都能得到好处. 依赖关系下,对于维护也有利有弊,第一,若某个被依赖的软件出现bug或者漏洞,这时候就只需要维护一个软件, ...

  8. 使用cow将socks5代理转为http代理(Windows版)

    自己租vps架设shadowsocks服务器,再配合chrome的SwitchyOmega插件科学上网一直很稳定,但是windows很多软件都不支持socks5,经常也会需要配置http代理做更新上传 ...

  9. 【Vegas原创】vlookup的使用方法

    情景: 1,当月移动话单,没有姓名,只有手机号码:(用户费用sheet) 2,IT部自己整理的手机号历史记录,有姓名,有手机号码:(历史信息sheet) 3,要求:需要从历史记录中,透视出当月所有手机 ...

  10. Apache Storm 与 Spark:对实时处理数据,如何选择【翻译】

    原文地址 实时商务智能这一构想早已算不得什么新生事物(早在2006年维基百科中就出现了关于这一概念的页面).然而尽管人们多年来一直在对此类方案进行探讨,我却发现很多企业实际上尚未就此规划出明确发展思路 ...