C# 读取压缩文件方式及乱码处理
目前主流的压缩文件操作类,除了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等等。这个开源项目好像是去年才开始的,在其他几个开源的项目基础上发展而来,也包括了DotNetZip,Nunrar项目。当然对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# 读取压缩文件方式及乱码处理的更多相关文章
- 读取Properties文件以及中文乱码问题
在java类中常见的读取Properties文件方式,是使用Properties.load(inputStream);的方式但是常常出现中文乱码问题,这就很尴尬了 public synchronize ...
- Java学习笔记之I/O流(读取压缩文件以及压缩文件)
1.读取压缩文件:ZipInputStream 借助ZipFile类的getInputStream方法得到压缩文件的指定项的内容,然后传递给InputStreamReader类的构造方法,返回给Buf ...
- springBoot使用@Value标签读取*.properties文件的中文乱码问题
上次我碰到获取properties文件中的中文出现乱码问题. 查了下资料,原来properties默认的字符编码格式为asci码,所以我们要对字符编码进行转换成UTF-8格式 原先代码:@Proper ...
- perl 利用管道读取压缩文件内容
perl的文件句柄不仅支持普通文件, 还支持管道,今天需要统计一个fastq文件中的序列数和碱基数,而NGS的fastq文件一般都是gzip压缩的,所以 需要读取压缩文件中的内容,代码如下: my ( ...
- cocos2dx中调用TinyXml读取xml配置文件 || cocos2d-x 中跨平台tinyxml读取xml文件方式
TiXmlDocument *doc = newTiXmlDocument; #if (CC_TARGET_PLATFORM ==CC_PLATFORM_ANDROID) //Android平台tin ...
- springboot 入门三- 读取配置信息二(读取属性文件方式)
在上篇文章中简单介绍自带读取方式.springboot提供多种方式来读取 一.@ConfigurationProperties(value="my") 支持更灵活的绑定及元数据的支 ...
- iOS zipzap读取压缩文件
最近在公司遇到一项需求,在不解压zip文件的情况下读取其中的文件,因为之前使用的ziparchive不能满足现在的需求,所以在网上一阵狂搜,终于找到了zipzap,实话说还真的难找. 之前读取本地zi ...
- Java读取压缩文件信息
不解压压缩文件,获取其中包含的文件,通过文件名检查是否包含非法文件.(后续再根据文件头或内容吧) zip: import java.util.zip.ZipEntry;import java.util ...
- spring使用@Value标签读取.properties文件的中文乱码问题的解决
最近测试某个老系统的时候,启动的时候发@Value注入的中文是乱码,文件使用GBK/UTF-8的时候均会出现乱码问题,但是spring配置文件里面注入的占位符并没有这个问题,bean文件设置了file ...
随机推荐
- atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php
atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php 1. 压缩算法的归类::: 纯算法,带归档算法 1 2. zlib(适合字符串压缩) 1 3. gz ...
- SSE技术详解:一种全新的HTML5服务器推送事件技术
前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...
- 如何使用代码动态的获取和设置ImageView的宽度和高度?
http://blog.csdn.net/wulianghuan/article/details/8644144 国内某金融企业的一道面试题:如何在代码中获得一个ImageVIew的高度和宽度? 相信 ...
- select选择框内容左右移动添加删除栏(升级)
先看一下之前的版本(10年前的作品了) 新版增加了拖动事件(双向及本列),双击左右自动移动,修正了算法性能更好: 也更新了如果姓名长度太长显示变形问题
- 文档大师 搜狗拼音无法输入汉字_乱码的解决方法_VB6程序
文档大师用 搜狗拼音无法输入汉字,显示的内容和输入的内容不一致.解决方法: 把中文输入里面的那个“美式键盘”再删掉就好用了,只保留搜狗输入法即可!
- Visual Studio 2008 使用 WinCE 5.0 Emulator
1. 簡介 由於 Visua Studio 2008 與 WinCE 5.0 Emulator 並沒有完全整合,因此想要測試我們所開發的 Windows CE 程式,需透過設定,將我們所開發的程式丟到 ...
- linq to entity 获取项的集合总数
IEnumerable<InspecReportsContextEntity> OnenewDate = lisConAll.Where(p => p.inspectime == t ...
- 使用shiro的SimpleHash来生成常用的摘要串
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</ ...
- CSS选择器实现搜索功能 驱动过滤搜索技术
一.CSS选择器可以用来实现搜索功能 CSS选择器可以用来实现搜索功能. 作者以前提过CSS3的选择器结合表单元素可以用来控制元素的显隐,这里,类似的,还是CSS3的选择器,用来过滤和搜索页面元素. ...
- 手机软件mockup设计工具
软件界面设计工具 UIDesigner v2.5 详见 http://www.downyi.com/downinfo/26770.html