/// <summary>
/// 解压一个文件(夹)到zip同级文件夹中
/// </summary>
/// <param name="zipFileName">zip文件路径</param>
/// <param name="entryName">要解压的文件</param>
public void ExtractEntry(string zipFileName, string entryName)
{
ExtractEntry(zipFileName, entryName, null);
}
/// <summary>
/// 解压一个文件(夹)到指定文件夹中
/// </summary>
/// <param name="zipFileName">zip文件路径</param>
/// <param name="entryName">要解压的文件</param>
/// <param name="targetDirectory">目标路径</param>
public void ExtractEntry(string zipFileName, string entryName, string targetDirectory)
{
if (targetDirectory == null)
targetDirectory = Path.GetDirectoryName(zipFileName);
entryName = entryName.Replace("\\", "/");
if (string.IsNullOrEmpty(Path.GetExtension(entryName)) && !entryName.EndsWith("/"))
entryName += "/";
continueRunning_ = true;
overwrite_ = Overwrite.Always;
confirmDelegate_ = null;
extractNameTransform_ = new WindowsNameTransform(targetDirectory);
using (zipFile_ = new ZipFile(zipFileName))
{
if (password_ != null)
{
zipFile_.Password = password_;
}
System.Collections.IEnumerator enumerator = zipFile_.GetEnumerator();
while (continueRunning_ && enumerator.MoveNext())
{
ZipEntry entry = (ZipEntry)enumerator.Current;
if (entry.Name.Length >= entryName.Length && entry.Name.ToLower().Substring(0, entryName.ToLower().Length) == entryName.ToLower())
{
ExtractEntry(entry);
}
}
}
}使用示例:
(new FastZip()).ExtractEntry(@"E:\001a.zip", "a.txt"); //解压单个文件
(new FastZip()).ExtractEntry(@"E:\001a.zip", "test/a.dat"); //解压单个文件
(new FastZip()).ExtractEntry(@"E:\001a.zip", "images/"); //解压文件夹SharpZipLib源码下载:http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx
评论(0)
暂无评论。