正常zip方式壓縮檔案,然後用wrar工具可以解壓出來(開始用wrar3.4版本的怎麼也解不出來,以為是不支援wrar解壓,後來改用3.9及4.11版本可以實現正常解壓,搞了半天時間,原來是版本問題,版本不對害死人啊),另外wrar壓縮時選擇「zip」選項壓縮時,再用此類進行解壓,也可以正常解壓。
在此以做標記,給自己個別人做鋪路,以後少走彎路,
呼叫方式,如下:
[csharp] view plaincopyprint?
private void btnnewzip_click(object sender, eventargs e)
catch
} private void btnnewunzip_click(object sender, eventargs e)
catch
} 以下是helper類庫,當中修改了乙個地方:
[csharp] view plaincopyprint?
using system;
using system.collections.generic;using system.linq;
using system.text;
using system.io;
using icsharpcode.sharpziplib.zip;
using icsharpcode.sharpziplib.checksums;
namespace common
string ars = new string[2];
if (recursive == false)
filestream zipfile;
zipoutputstream zipstream;
//open
zipfile = file.create(targetfilename);
zipstream = new zipoutputstream(zipfile);
if (dir != string.empty)
//close
zipstream.finish();
zipstream.close();
if (file.exists(targetfilename))
return true;
else
return false;
} /// /// 壓縮目錄
///
/// 陣列(陣列[0]: 要壓縮的目錄; 陣列[1]: 壓縮的檔名)
public static bool zipfiledictory(string args)
} catch (exception e)
finally
return true;
} /// /// 壓縮某個子資料夾
///
///
///
///
private static void _compressfolder(string basepath, zipoutputstream zips, string zipfolername)
string names = directory.getfiles(basepath);
foreach (string filename in names)
names = directory.getdirectories(basepath);
foreach (string foldername in names)
} /// /// 壓縮某個子檔案
///
///
///
///
private static void _addfile(string filename, zipoutputstream zips, string zipfolername)
} /// /// 壓縮單獨檔案
///
///
///
///
private static void _createzipfile(string filetozip, zipoutputstream zips, string zipfolername)
zipentry zipen = new zipentry(temp.substring(3));
zips.putnextentry(zipen);
byte buffer = new byte[16384];
system.int32 size = streamtozip.read(buffer, 0, buffer.length);
zips.write(buffer, 0, size);
try
} catch (system.exception ex)
streamtozip.close();
} catch (exception e)
} #endregion
#region
/// /// 解壓縮目錄
///
/// 壓縮目錄路徑
/// 解壓縮目錄路徑
public void unzipdirectory(string zipdirectorypath, string unzipdirecotypath, string password)
using (zipinputstream zipstream = new zipinputstream(file.openread(zipdirectorypath)))
zipentry zipentry = null;
while ((zipentry = zipstream.getnextentry()) != null)
if (!string.isnullorempty(filename))
else//2012-5-28修改,支援單個檔案壓縮時自己建立目標資料夾
} using (filestream stream = file.create(unzipdirecotypath + @"\" + zipentry.name))
else
} }
} }
} }
#endregion
} }
C 使用SharpZipLib實現zip壓縮
使用國外開源加壓解壓庫icsharpcode.sharpziplib實現加壓,該庫的官方 為 使用體驗 可以照著例子實現簡單的加壓解壓,可以加壓乙個資料夾中的所有檔案,但沒有提供加壓子資料夾的說明。目前網上的一些 有的無法加壓空資料夾,有的加壓了用rar解不開,這是一點需要改進的。但如果只需要加壓資...
SharpZipLib使用示例
sharpziplib使用示例 zipinputstream gzipinputstream用於解壓縮deflate gzip格式流,zipoutputstream gzipoutputstream用於壓縮deflate gzip格式流。streamutil類包含了幾個stream處理輔助方法 co...
SharpZipLib使用示例
using zipfile zip zipfile.create e test.zip 2 將資料夾壓縮為檔案 new fastzip createzip e test.zip e test true,最後乙個引數是使用正規表示式表示的過濾檔案規則。createzip方法有3個過載版本,其中有目錄過...