如何使用C#压缩文件及注意的问题!

转载 2006年06月22日 15:53:00
首选,先要找一个开源的C#压缩组件。
如:ICSharpCode.SharpZipLib 下载地址:http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx
根据它的帮助你就可以做自己需要的东东了。
我在使用这个组件行,遇到了一个问题。
当压缩小文件时没有什么错误,一旦源文件达到150M时,它会让你的机器垮掉。(至少是我的机器)
为什么会这样,因为如果源文件是150M时,你就需要在内存申请一个150M大小的字节数组。好点的机器还没问题,一般的机器可就惨了。如果文件在大的话,好机器也受不了的。
为了解决大文件压缩的问题,可以使用分段压缩的方法。

private string CreateZIPFile(string path,int M)
{
try
{
Crc32 crc = new Crc32();
ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipout=new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(System.IO.File.Create(path+".zip"));
System.IO.FileStream fs=System.IO.File.OpenRead(path);
long pai=1024*1024*M;//每M兆写一次
long forint=fs.Length/pai+1;
byte[] buffer=null;
ZipEntry entry = new ZipEntry(System.IO.Path.GetFileName(path));
entry.Size = fs.Length;
entry.DateTime = DateTime.Now;
zipout.PutNextEntry(entry);
for(long i=1;i<=forint;i++)
{
if(pai*i<fs.Length)
{
buffer = new byte[pai];
fs.Seek(pai*(i-1),System.IO.SeekOrigin.Begin);
}
else
{
if(fs.Length<pai)
{
buffer = new byte[fs.Length];
}
else
{
buffer = new byte[fs.Length-pai*(i-1)];
fs.Seek(pai*(i-1),System.IO.SeekOrigin.Begin);
}
}
fs.Read(buffer,0,buffer.Length);
crc.Reset();
crc.Update(buffer);
zipout.Write(buffer,0, buffer.Length);
zipout.Flush();
}
fs.Close();
zipout.Finish();
zipout.Close();
System.IO.File.Delete(path);
return path+".zip";
}
catch(Exception ex)
{
string str=ex.Message;
return path;
}
}

C#实现文件压缩解压类

C#实现文件压缩解压类                   首先需要在项目里引用ICSharpCode.SharpZipLib.dll。  下载网址:http://ncu.dl.sourceforge...
  • T_T_X_S
  • T_T_X_S
  • 2014年04月18日 14:58
  • 2001

Ajax需要注意的几个问题

在应用Ajax时,需要注意安全问题、性能问题和浏览器兼容性问题,下面进行具体介绍。 一 安全问题 随着网络的普及,安全问题已经是一个不可忽略的重要问题了。由于Web本身就是不安全的,所以尽可能降低...
  • chengqiuming
  • chengqiuming
  • 2017年04月12日 10:49
  • 222

用 jdbc 注意问题

用jdbc不多,以前都是用现成的框架mybatis 中的sqlmap 映射,以后遇到问题就在下面加一项总结。   最近的项目里面用的jdbc比较多,所有的数据库增删改查都是jdbc ,这样写好不好就不...
  • u010552708
  • u010552708
  • 2016年06月03日 19:10
  • 329

Java中要注意的几个问题

对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。...
  • li294474470
  • li294474470
  • 2016年03月30日 09:08
  • 683

使用ImageView应该注意的地方

DiagonalView https://github.com/IntruderShanky/Squint 一个可以根据图片变颜色,更加细腻的阴影效果的 Imgae 控件 https://github...
  • gundumw100
  • gundumw100
  • 2017年04月10日 18:40
  • 145

c#程序调用c++编写dll需要注意问题

http://blog.csdn.net/richerg85/article/details/7492195         分类:            c#学习相关2012-04-25 17...
  • yuanyuan_186
  • yuanyuan_186
  • 2014年06月15日 11:56
  • 1677

c# 调用 WinRAR 实现文件压缩、文件解压,WinRAR命令行参数,不弹窗

//压缩程序安装路径 string pathExe = Application.StartupPath + @"\WinRAR.exe"; Proces...
  • dhfekl
  • dhfekl
  • 2013年10月22日 14:29
  • 2157

C# 利用Rar压缩文件并FTP上传

1.利用Rar压缩文件 /// /// 使用Rar压缩文件 /// /// 待压缩文件路径 /// 压缩后的文件路...
  • a497785609
  • a497785609
  • 2017年03月13日 08:59
  • 534

C#中压缩/解压缩7-zip文件的方法

使用C#压缩/解压缩7-zip文件 7-Zip 简介   7-Zip 是一款号称有着现今最高压缩比的压缩软件,它不仅支持独有的 7z 文件格式,而且还支持各种其它压缩文件格式,其中包...
  • autumn20080101
  • autumn20080101
  • 2016年07月20日 08:55
  • 418

FMDB总结及其中的一些注意点

FMDB它是多么牛13, 我就不说, 既然选择使用它, 相信对它强大的封装已经了解了, 这里就不废话了, 直接正文FMDB的三个分类 FMDB有三个主要的类 1.FMDatabase – 表示一个单独...
  • zhz459880251
  • zhz459880251
  • 2015年11月06日 22:27
  • 1359
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何使用C#压缩文件及注意的问题!
举报原因:
原因补充:

(最多只允许输入30个字)