DotNetZip在ZipFile類上有一個字符串索引器,使它非常容易。
using (ZipFile zip = ZipFile.Read(sourcePath)
{
zip["NameOfFileToUnzip.txt"].Extract();
}
您不需要擺弄inputstreams和outputstreams等等,只是爲了提取文件。另一方面,如果你想要流,你可以得到它:
using (ZipFile zip = ZipFile.Read(sourcePath)
{
Stream s = zip["NameOfFileToUnzip.txt"].OpenReader();
// fiddle with stream here
}
你也可以做通配符提取。
using (ZipFile zip = ZipFile.Read(sourcePath)
{
// extract all XML files in the archive
zip.ExtractSelectedEntries("*.xml");
}
有重載指定覆蓋/不覆蓋,不同的目標目錄等,還可以提取基於不是文件名的其他標準。例如,提取所有文件更新於2009年1月15日:
// extract all files modified after 15 Jan 2009
zip.ExtractSelectedEntries("mtime > 2009-01-15");
而且你可以結合標準:
// extract all files that are modified after 15 Jan 2009) AND larger than 1mb
zip.ExtractSelectedEntries("mtime > 2009-01-15 and size > 1mb");
// extract all XML files that are modified after 15 Jan 2009) AND larger than 1mb
zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15 and size > 1mb");
您不必提取您選擇的文件。您可以選擇它們,然後決定是否提取。
using (ZipFile zip1 = ZipFile.Read(ZipFileName))
{
var PhotoShopFiles = zip1.SelectEntries("*.psd");
// the selection is just an ICollection<ZipEntry>
foreach (ZipEntry e in PhotoShopFiles)
{
// examine metadata here, make decision on extraction
e.Extract();
}
}
如果我想從一個zip文件的幾個文件解壓縮到一個文件夾,怎麼做?例如,我想獲得前綴爲「好」的文件,如何用我的代碼做到這一點:「var ze = zf.GetEntry(」good *「);」。感謝您的任何想法。 – 2010-11-03 16:43:36