目前主流的压缩文件操作类,除了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. atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php

    atitit.压缩算法 ZLib ,gzip ,zip   最佳实践  java .net php 1. 压缩算法的归类::: 纯算法,带归档算法 1 2. zlib(适合字符串压缩) 1 3. gz ...

  2. SSE技术详解:一种全新的HTML5服务器推送事件技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

  3. 如何使用代码动态的获取和设置ImageView的宽度和高度?

    http://blog.csdn.net/wulianghuan/article/details/8644144 国内某金融企业的一道面试题:如何在代码中获得一个ImageVIew的高度和宽度? 相信 ...

  4. select选择框内容左右移动添加删除栏(升级)

    先看一下之前的版本(10年前的作品了) 新版增加了拖动事件(双向及本列),双击左右自动移动,修正了算法性能更好: 也更新了如果姓名长度太长显示变形问题

  5. 文档大师 搜狗拼音无法输入汉字_乱码的解决方法_VB6程序

    文档大师用 搜狗拼音无法输入汉字,显示的内容和输入的内容不一致.解决方法: 把中文输入里面的那个“美式键盘”再删掉就好用了,只保留搜狗输入法即可!

  6. Visual Studio 2008 使用 WinCE 5.0 Emulator

    1. 簡介 由於 Visua Studio 2008 與 WinCE 5.0 Emulator 並沒有完全整合,因此想要測試我們所開發的 Windows CE 程式,需透過設定,將我們所開發的程式丟到 ...

  7. linq to entity 获取项的集合总数

    IEnumerable<InspecReportsContextEntity> OnenewDate = lisConAll.Where(p => p.inspectime == t ...

  8. 使用shiro的SimpleHash来生成常用的摘要串

    <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</ ...

  9. CSS选择器实现搜索功能 驱动过滤搜索技术

    一.CSS选择器可以用来实现搜索功能 CSS选择器可以用来实现搜索功能. 作者以前提过CSS3的选择器结合表单元素可以用来控制元素的显隐,这里,类似的,还是CSS3的选择器,用来过滤和搜索页面元素. ...

  10. 手机软件mockup设计工具

    软件界面设计工具 UIDesigner v2.5 详见 http://www.downyi.com/downinfo/26770.html