最最簡(jiǎn)單的解壓縮文件(夾)代碼——主要代碼就三行哦~
今天做項(xiàng)目的時(shí)候遇到了這樣一個(gè)需求:把多張表數(shù)據(jù)以.dat格式文件導(dǎo)出,多張表就會(huì)有多個(gè).dat文件,想要把它們下載到客戶端指定位置,就必須把它們放在一個(gè)文件夾中壓縮下載。
通常解壓縮文件有兩種方法:使用GZip和使用WinRAR。前者是通過(guò)GZipStream類(lèi)對(duì)文件(夾)進(jìn)行解壓縮,生成.zip格式的壓縮文件,我不喜歡用這種方法的原因是它對(duì)文件(夾)有權(quán)限的要求,要么給目標(biāo)文件(夾)添加一個(gè)NETWORK SERVICE 用戶,要么設(shè)置應(yīng)用池默認(rèn)屬性的標(biāo)識(shí)為L(zhǎng)ocalService,否則會(huì)出現(xiàn)異常:對(duì)路徑“xxx”的訪問(wèn)被拒絕。相對(duì)而言用WinRAR解壓縮文件(夾)就省事多了,也比較好理解,就相當(dāng)于對(duì)文件(夾)進(jìn)行右鍵--壓縮要“xxx.rar”操作。主要代碼只有三行呢。
/// <summary>
/// 壓縮文件(夾)
/// </summary>
/// <param name="rootPath">要壓縮的目標(biāo)文件(夾)的絕對(duì)路徑,例:"G:\Sample\新建文件夾"</param>
/// <param name="filePath">壓縮后文件存放目錄,例:"G:\Sample\新建文件夾.rar"</param>
public void YaSuo(string rootPath,string filePath)
{
pro.StartInfo.FileName = @"G:\WinRAR.exe";//WinRAR.exe的絕對(duì)路徑,例如G盤(pán)根目錄
System.Diagnostics.Process pro = new System.Diagnostics.Process();
pro.StartInfo.Arguments = string.Format("a -ep {0} {1}", filePath, path);
pro.Start();
}
解壓與之相似,相當(dāng)于右鍵--解壓到當(dāng)前文件夾
/// <summary>
/// 解壓文件(夾)
/// </summary>
/// <param name="filePath">待解壓的.rar壓縮文件絕對(duì)路徑,例:"G:\Sample\新建文件夾.rar"</param>
/// <param name="savePath">解壓后文件保存路徑,例:"G:\Sample\"</param>
public void JieYa(string filePath, string savePath)
{
pro.StartInfo.FileName = @"G:\WinRAR.exe";//WinRAR.exe的絕對(duì)路徑,例如G盤(pán)根目錄
System.Diagnostics.Process pro = new System.Diagnostics.Process();
pro.StartInfo.Arguments = string.Format("X {0} {1}", filePath, savePath);
pro.Start();
}

浙公網(wǎng)安備 33010602011771號(hào)