zc解壓舊版
我在做項目的時候需要將文件進行壓縮和解壓縮,於是就從http://www.icsharpcode.net下載了關於壓縮和解壓縮的源碼,但是下載下來後,面對這么多的代碼,一時不知如何下手。只好耐下心來,慢慢的研究,總算找到了門路。針對自己的需要改寫了文件壓縮和解壓縮的兩個類,分別為ZipClass和UnZipClass。其中碰到了不少困難,就決定寫出來壓縮和解壓的程序後,一定把源碼貼出來共享,讓首次接觸壓縮和解壓縮的朋友可以少走些彎路。下面就來解釋如何在C#里用http://www.icsharpcode.net下載的SharpZipLib進行文件的壓縮和解壓縮。
首先需要在項目里引用SharpZipLib.dll。然後修改其中的關於壓縮和解壓縮的類。實現源碼如下:
/// <summary>
/// 壓縮文件
/// </summary>
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;
namespace Compression
{
public class ZipClass
{
public void ZipFile(string FileToZip, string ZipedFile ,int CompressionLevel, int BlockSize)
{
//如果文件沒有找到,則報錯
if (! System.IO.File.Exists(FileToZip))
{
throw new System.IO.FileNotFoundException("The specified file " + FileToZip + " could not be found. Zipping aborderd");
}
System.IO.FileStream StreamToZip = new System.IO.FileStream(FileToZip,System.IO.FileMode.Open , System.IO.FileAccess.Read);
System.IO.FileStream ZipFile = System.IO.File.Create(ZipedFile);
ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);
ZipEntry ZipEntry = new ZipEntry("ZippedFile");
ZipStream.PutNextEntry(ZipEntry);
ZipStream.SetLevel(CompressionLevel);
byte[] buffer = new byte[BlockSize];
System.Int32 size =StreamToZip.Read(buffer,0,buffer.Length);
ZipStream.Write(buffer,0,size);
try
{
while (size < StreamToZip.Length)
{
int sizeRead =StreamToZip.Read(buffer,0,buffer.Length);
ZipStream.Write(buffer,0,sizeRead);
size += sizeRead;
}
}
catch(System.Exception ex)
{
throw ex;
}
ZipStream.Finish();
ZipStream.Close();
StreamToZip.Close();
}
public void ZipFileMain(string[] args)
{
string[] filenames = Directory.GetFiles(args[0]);
Crc32 crc = new Crc32();
ZipOutputStream s = new ZipOutputStream(File.Create(args[1]));
s.SetLevel(6); // 0 - store only to 9 - means best compression
foreach (string file in filenames)
{
//打開壓縮文件
FileStream fs = File.OpenRead(file);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
ZipEntry entry = new ZipEntry(file);
entry.DateTime = DateTime.Now;
// set Size and the crc, because the information
// about the size and crc should be stored in the header
// if it is not set it is automatically written in the footer.
// (in this case size == crc == -1 in the header)
// Some ZIP programs have problems with zip files that don't store
// the size and crc in the header.
entry.Size = fs.Length;
fs.Close();
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
s.PutNextEntry(entry);
s.Write(buffer, 0, buffer.Length);
}
s.Finish();
s.Close();
}
}
}
現在再來看看解壓文件類的源碼
/// <summary>
/// 解壓文件
/// </summary>
using System;
using System.Text;
using System.Collections;
using System.IO;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using System.Data;
using ICSharpCode.SharpZipLib.BZip2;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.Zip.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
using ICSharpCode.SharpZipLib.GZip;
namespace DeCompression
{
public class UnZipClass
{
public void UnZip(string[] args)
{
ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]));
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(args[1]);
string fileName = Path.GetFileName(theEntry.Name);
//生成解壓目錄
Directory.CreateDirectory(directoryName);
if (fileName != String.Empty)
{
//解壓文件到指定的目錄
FileStream streamWriter = File.Create(args[1]+theEntry.Name);
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
streamWriter.Close();
}
}
s.Close();
}
}
}
有了壓縮和解壓縮的類以後,就要在窗體里調用了。怎麼?是新手,不會調用?Ok,接著往下看如何在窗體里調用。
首先在窗體里放置兩個命令按鈕(不要告訴我你不會放啊~),然後編寫以下源碼
/// <summary>
/// 調用源碼
/// </summary>
private void button2_Click_1(object sender, System.EventArgs e)
{
string []FileProperties=new string[2];
FileProperties[0]="C:\\unzipped\\";//待壓縮文件目錄
FileProperties[1]="C:\\zip\\a.zip"; //壓縮後的目標文件
ZipClass Zc=new ZipClass();
Zc.ZipFileMain(FileProperties);
}
private void button2_Click(object sender, System.EventArgs e)
{
string []FileProperties=new string[2];
FileProperties[0]="C:\\zip\\test.zip";//待解壓的文件
FileProperties[1]="C:\\unzipped\\";//解壓後放置的目標目錄
UnZipClass UnZc=new UnZipClass();
UnZc.UnZip(FileProperties);
}
好了,到此為止,如何壓縮和解壓縮的類都已經完成了,需要的朋友直接拿走調吧。
㈡ C++語言怎麼用zlib庫來解壓.ISO或.zip文件
下面是使用zlib庫的壓縮和解壓縮演示代碼:
#include <stdlib.h>
#include <stdio.h>
#include <zlib.h>
int main(int argc, char* argv[])
{
FILE* file;
uLong flen;
unsigned char* fbuf = NULL;
uLong clen;
unsigned char* cbuf = NULL;
/* 通過命令行參數將srcfile文件的數據壓縮後存放到dstfile文件中 */
if(argc < 3)
{
printf("Usage: zcdemo srcfile dstfile\n");
return -1;
}
if((file = fopen(argv[1], "rb")) == NULL)
{
printf("Can\'t open %s!\n", argv[1]);
return -1;
}
/* 裝載源文件數據到緩沖區 */
fseek(file, 0L, SEEK_END); /* 跳到文件末尾 */
flen = ftell(file); /* 獲取文件長度 */
fseek(file, 0L, SEEK_SET);
if((fbuf = (unsigned char*)malloc(sizeof(unsigned char) * flen)) == NULL)
{
printf("No enough memory!\n");
fclose(file);
return -1;
}
fread(fbuf, sizeof(unsigned char), flen, file);
/* 壓縮數據 */
clen = compressBound(flen);
if((cbuf = (unsigned char*)malloc(sizeof(unsigned char) * clen)) == NULL)
{
printf("No enough memory!\n");
fclose(file);
return -1;
}
if(compress(cbuf, &clen, fbuf, flen) != Z_OK)
{
printf("Compress %s failed!\n", argv[1]);
return -1;
}
fclose(file);
if((file = fopen(argv[2], "wb")) == NULL)
{
printf("Can\'t create %s!\n", argv[2]);
return -1;
}
/* 保存壓縮後的數據到目標文件 */
fwrite(&flen, sizeof(uLong), 1, file); /* 寫入源文件長度 */
fwrite(&clen, sizeof(uLong), 1, file); /* 寫入目標數據長度 */
fwrite(cbuf, sizeof(unsigned char), clen, file);
fclose(file);
free(fbuf);
free(cbuf);
return 0;
}
㈢ 為什麼攝像頭打不開啊
首先,先卸載你原來的程序
卸載方法:右擊「我的電腦」-「屬性」-「硬體」-「設備管理器」或者直接按Ctrl+F1,然後打開「通用串列匯流排控制器」,把下面的"Usb Root Hub"都刪除掉。
還有就是打開「控制面板」的「添加刪除程序」有沒有攝像頭的應用程序如vm301的程序卸載掉
2、然後重新啟動,重啟之後就會找到新硬體,這時不要選擇自動安裝,然後點擊「下一步」,然後把「搜索軟盤、CD rom」打鉤,其它的有鉤的通通去掉。並且放上光碟,不要從光碟里安裝驅動。讓系統自動搜索。
這樣就可以安裝成功了。
一、 驅動不容易安裝的原因
1、 目前市面上流行的中星微攝像頭驅動版本很多,許多用戶在安裝卸載驅動過程中殘留有垃圾文件在系統注冊表裡面,造成後面的驅動更新過程中安裝困難;
2、 目前市面上存在著一種克隆操作系統,裡面集成了中星微舊版並同過了WHQL的驅動,當用戶安裝新買的攝像頭或更新最新驅動後,攝像頭無法正常工作;
方法一、自動卸載方法
步驟一、點擊開始菜單中對應驅動的Uninstall卸載,(有可能Uninstall的功能已經破壞,那麼可以通過安裝新驅動進行反安裝,系統會首先將舊驅動卸載掉,同樣也可以達到目的。)
步驟二、在新的驅動安裝前選擇附件中以下相對應的可執行文件:
FOR_XP_ME_98.EXE 用於Windows XP/ME/98
FOR_Win2K.EXE 用於Windows 2000
(注意:該工具要求系統的默認路徑是C盤才有效,在Windows ME/98操作系統下如出現錯誤對話框,表示系統已經干凈了,該工具不會對已經安裝的驅動產生危害)
步驟三、安裝新的驅動
方法二、手動卸載方法
步驟一、在我的電腦-工具-文件夾選項-查看中將隱藏文件和文件夾選擇為「選擇所有文件和文件夾
然後到C:\Windows\inf文件夾中將所有的OEM文件(如oem0.inf,oem0.pnf;oem1.inf,oem1.pnf…)剪切並轉移到另外的目錄中保存或者手動刪除掉該攝像頭對應的oem文件
步驟二、完成上面的步驟後,插入USB攝像頭,這時電腦會發現新硬體並彈出安裝驅動的信息,選擇取消,然後用滑鼠右鍵點擊我的電腦,選擇屬性,在彈出系統屬性界面中,進入系統屬性-硬體-設備管理器將帶有感嘆號的PC CAMERA按滑鼠右鍵卸載;
步驟三、拔除攝像頭,開始安裝新的驅動。
針對以上第二種現象
步驟一、克隆操作系統是將攝像頭驅動默認存放在C:\Windows\Driver\Camera\301P文件夾下面,當你點擊新的攝像頭驅動光碟安裝時,系統不會提示已經存在有攝像頭驅動並把此驅動卸載,請把這個文件夾找到並刪除掉;
步驟二、先安裝新的攝像頭驅動,再插上攝像頭裝載硬體,安裝完成後重新啟動電腦後可以正常使用;
步驟三、不需重復以上兩個步驟,直接點擊新的光碟安裝最新的驅動,插上攝像頭後系統檢測到新硬體,並自動完成硬體驅動裝載;
步驟四、進入到設備管理器中,,可以看到圖像處理設備已經成功安裝,但當你打開「AMCAP」預覽圖像時會出現無法預覽、白屏、黑屏現象;
步驟五、把滑鼠右鍵放在圖像處理設備的「Vimicro USB PC Camera(ZC0301PL)」更新驅動程序,出現對話框後選擇「從列表或指定為位置安裝
步驟六選擇下一步後選擇「不要搜索」,進入「從軟盤安裝」界面。
步驟七:點擊瀏覽,將路徑指向驅動光碟目錄或最新驅動目錄下面的「usbvm31b.inf」步驟八:一直點擊「下一步」完成驅動安裝
㈣ 手機卡刷機怎麼刷
安卓手機如何用卡刷機
進入Recovery方法:先把機器關掉(拔電池再插上)、接著插上數據線或充電器(機器液晶顯示正在充電)、然後按著音量鍵「+」與音量鍵「-」加關機或開機鍵(同時按著三至五秒)
Recovery操作方法:電源關機鍵為確認,音量鍵+為上,音量鍵-為下
刷ROM1、下載自己機型的ROM包,放到手機SD卡中,關機進入recovery 模式
2、如果recovery版本是中文的,選擇『清空所有數據』 和『清空所有緩存』這兩個選項;如果沒有recovery版本為英文的話選擇『wipe data/factory reset』和『wipe cache partition』這兩個選項
3、進入後,選擇帶有「是」或者「YES」的項
4、返回recovery主界面,中文版選擇「從sd卡選擇刷機包」;英文版的選擇「install zip from sdcard」
5、再選擇「從SD卡選擇zip刷機包」;英文版的為第一個選項「choose zip form sdcard」
6、找到SD卡中你所要刷的那個ROM包,xxxxx.zip
7、確定後,開始刷機,等待刷機完成,中文提示「刷機完成」;英文版提示「Install from sdcard plete 」
8、返回recovery主界面,選擇「立即重啟系統」;英文版「reboot system now」
刷完機後第一次開機會比較慢,請耐心等待。
手機卡死了怎麼刷機啊
要是安卓機 你關機狀態音量加減 和電源鍵 一起按住 不松
安卓手機刷機怎麼刷
刷機很容易的。線刷、卡刷都行,看你下載的rom後綴名。後綴名為zip的,可以線刷,也可以卡刷,dar、md5是線刷。一、卡刷是把rom復制到SD卡,關機後按音量鍵「+」和home鍵,再按住電源鍵,有界面了就按音量「+」或「-」選擇「apply upd from external storage」(從外部的存儲應用中進行更新),按電源鍵確認;以音量「+」或「-」選擇SD卡上的刷機room(可以在菜單里看到你復制到SD卡根目錄下的刷機rom),按電源鍵確認。刷完自動滾動到recovery界面,按音量「+」或「-」選擇「reboot system now」(重啟系統);
二、線刷
1、用刷機大師獲取ROM許可權;
2、勾選「未知來源」、勾選「USB調試」;
3、用刷機大師備份數據;
4、用91手機助手、豌豆莢安裝手機驅動;
5、關機狀態,按住音量鍵「-」和home鍵,再按住電源鍵,有界面了就按音量「+」;
6、手機與電腦連接(數據線);
7、啟動odin刷機工具軟體,當ID:(埠號),即第三行第一個空框出現黃色時,點擊PDA,載入「I9100GZCLPL_I9100GZCLPL_I9100GOZHLPL_HOME.tar.md5」,再點擊「開始」(start),當第一行第一個大空框出現綠色「PASSI」字樣,說明刷機成功!
三、用刷機大師(可以省去卡刷zip刷機ROM的麻煩)
1、啟動刷機大師;
2、備份數據;
3、點擊「一鍵刷機」
4、載入zip手機ROM包
5、開始刷機。
手機怎麼重新刷機?
刷機方法需要以手機實際故障而定。
以卡刷為例):用內存卡(SD、TF之類)來刷機,
卡刷流程:
1,先下載一個對應閥型的卡刷刷機包(可以到官方,ROM之家或ROM基地下載)。
2,把下載的刷機包直接放在SD卡的根目錄。
3,關機,卸掉SIM卡,內存卡裝好,建議內存卡里重要東西要備份。
4,關機時,同時按開機按鍵和音量加鍵,大概十秒鍾,然後放手。
5,進入recovery模式即REC模式。
6,選wipe cache partition 清理緩存。
7,完成清理緩存後選wipe data/factory ,恢復出廠設置。
8,先選擇「install zip from sdcard」,電源鍵確定,再選擇apply sdcard:update ,電源鍵確定,就是從內存卡里選擇刷機包進行刷機,耐心等待完成。
手機死機後該如何刷機
可以
卡刷線刷都可以,只要你能在網路搜索到與你手機品牌機型相一致的刷機包
卡刷
第一步:下載你需要卡刷的文件,解壓得到zip格式的文件,然後放到TF內存卡根目錄下。然後關機,拿出電池10秒後,再放回去,按住音量+,再按開機鍵,就進去卡刷模式了
第二步:音量鍵為上下,開機鍵為選擇,刷機的時候選擇「從SD卡選擇更新」
第三步:選擇「從SD選擇升級包更新
第四步:選擇你下載的刷機包,驅動,或者補丁文件(注意文件包不能有中文名)
第五步:選擇「是」就開機刷機了
刷機完之後還應該恢復一下出廠設置
提示:用卡刷如果系統自帶的recovery工程模式不完整,需要手動刷入與手機品牌機型相一致的第三方recovery工程模式。刷入第三方recovery,需要找到與手機品牌機型一致的recovery文件,在已經獲取到ROOT許可權的手機上,打開USB調試,用數據線把電腦連接手機,把第三方recovery文件復制到手機的SD卡卡根,然後在手機上安裝移動叔叔工具箱軟體,更新recovery,導入,一路確定,手機重啟。即可進入recovery工程模式進行刷機了。
線刷
打開電腦在網路搜聯想的品牌官網,看看有沒有與你的手機機型一致的線刷包,然後手機關機用數據線連接到電腦,卸下手機電池,按手機的開機鍵(或開機鍵+音量鍵)安裝驅動,然後在電腦上運行刷機平台,載入刷機資料,點擊開始刷機,帶進度條滿格,刷機即告完成。
酷派大神手機最簡單的刷機怎樣刷
【刷機教程】介紹兩種方法
(1)一鍵刷機。
使用刷機軟體一鍵刷機,例如刷機助手,很簡單,注意備份。
(2)卡刷
按常規卡刷流程刷入即可,注意刷第三方rec,刷入包之前要雙清,電池電量,可用內存!
卡刷步驟如下:
第一步:導入第三方Recovery(想刷第三方rom,第三方 Recovery不可或缺;如果前面已經刷過三方recovery,就不需要再刷了)。
第二步:刷第三方ROM包(卡刷)1. 下載ROM包,無需解壓,復制到SD卡根目錄或者內置卡;
2. 進入Recovery模式
2.1 關機狀態下,按住音量上+開機鍵開機,並按住兩鍵不放,直到進入Recovery;
2.2 開機狀態下,選擇「重新啟動」後,按住音量鍵上不放,即可進入 recovery模式;
3. wipe data/factory reset(清空所有數據) (音量鍵控制上下,電源鍵確定,以下同)
4. Yes
5. wipe cache partition(清空緩存數據)
6. Yes
7. install zip from sdcard(從SD卡選擇刷機包)
8. choose zip from sdcard(從SD卡選擇ZIP文件)
9. 找到安裝包,開刷
10 最後選擇重啟手機,恭喜刷機成功! (首次開機需要2-3分鍾左右,請耐心等待)
刷機包下載shuajijia
為什麼安卓手機越用越卡?刷機了還是很卡呢?
硬體磨損
無卡手機刷機怎麼刷?
您好,三星官網沒有提供刷機軟體。由於刷機存在風險,如因自行刷機後導致的手機問題,還有可能會影響包修,因此我們不建議您自行刷機。
若手機因系統故障無法正常使用或自行刷機後導致手機出現問題,建議您將機器送到三星售後服務中心,由工程師幫助檢查處理。
手機刷機不使內存卡怎麼刷
手機進入recovery模式進行刷機:關機狀態下長按Home鍵和關機鍵。如果長按後出現一個嘆號和手機圖片,原因是recovery版本較舊,這時同時按接聽和掛機鍵,然後再按Home鍵和關機鍵可進入recovery模式。如果出現這種情況,建議升級recovery到1.6.2。
進入recovery模式後,先執行WIPE,把所有選項都WIPE一遍,然後進入flash zip from sdcard,按照說明的順序開刷。
提示:刷機之前記得先備份聯系人和簡訊以及其它重要文檔。
我手機是在移動營業廳領的很卡我想刷機怎麼刷是4g的 30分
移動營業廳領的手機
具體是什麼機型
可以去安卓論壇搜索對應教程