国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > 綜合 > 正文

如何使用C#壓縮文件及注意的問題!

2024-07-21 02:19:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
國(guó)內(nèi)最大的酷站演示中心!
首選,先要找一個(gè)開源的c#壓縮組件。
如:icsharpcode.sharpziplib 下載地址:http://www.icsharpcode.net/opensource/sharpziplib/default.aspx
根據(jù)它的幫助你就可以做自己需要的東東了。
我在使用這個(gè)組件行,遇到了一個(gè)問題。
當(dāng)壓縮小文件時(shí)沒有什么錯(cuò)誤,一旦源文件達(dá)到150m時(shí),它會(huì)讓你的機(jī)器垮掉。(至少是我的機(jī)器)
為什么會(huì)這樣,因?yàn)槿绻次募?50m時(shí),你就需要在內(nèi)存申請(qǐng)一個(gè)150m大小的字節(jié)數(shù)組。好點(diǎn)的機(jī)器還沒問題,一般的機(jī)器可就慘了。如果文件在大的話,好機(jī)器也受不了的。
為了解決大文件壓縮的問題,可以使用分段壓縮的方法。

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;
}
}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 罗定市| 萨嘎县| 建水县| 西乡县| 黎城县| 静宁县| 葫芦岛市| 甘肃省| 大方县| 招远市| 蓝田县| 武功县| 合作市| 卢氏县| 宁波市| 楚雄市| 启东市| 瑞安市| 吉首市| 大同县| 日喀则市| 西乌珠穆沁旗| 萨迦县| 会昌县| 老河口市| 克山县| 泗阳县| 固阳县| 眉山市| 明水县| 龙岩市| 雷山县| 内丘县| 烟台市| 团风县| 万盛区| 包头市| 衡南县| 安陆市| 高清| 南昌县|