如何在C#.NET 4.5中仅从zip存档中提取特定目录?
我有以下内部结构的zip文件:如何在C#.NET 4.5中仅从zip存档中提取特定目录?,c#,.net,compression,zip,C#,.net,Compression,Zip,我有以下内部结构的zip文件: file1.txt directoryABC fileA.txt fileB.txt fileC.txt 将文件从“directoryABC”文件夹提取到硬盘上的目标位置的最佳方法是什么?例如,如果目标位置为“C:\temp”,则其内容应为: temp directoryABC fileA.txt fileB.txt fileC.txt 此外,在某些情况下,我只想提取“direct
file1.txt
directoryABC
fileA.txt
fileB.txt
fileC.txt
将文件从“directoryABC”文件夹提取到硬盘上的目标位置的最佳方法是什么?例如,如果目标位置为“C:\temp”,则其内容应为:
temp
directoryABC
fileA.txt
fileB.txt
fileC.txt
此外,在某些情况下,我只想提取“directoryABC”的内容,因此结果是:
temp
fileA.txt
fileB.txt
fileC.txt
如何使用C#.NET 4.5中System.IO.Compression中的类来实现这一点?这是另一个将命名目录的文件提取到目标目录的版本
class Program
{
static object lockObj = new object();
static void Main(string[] args)
{
string zipPath = @"C:\Temp\Test\Test.zip";
string extractPath = @"c:\Temp\xxx";
string directory = "testabc";
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
var result = from currEntry in archive.Entries
where Path.GetDirectoryName(currEntry.FullName) == directory
where !String.IsNullOrEmpty(currEntry.Name)
select currEntry;
foreach (ZipArchiveEntry entry in result)
{
entry.ExtractToFile(Path.Combine(extractPath, entry.Name));
}
}
}
}
请注意,为了使用
ZipFile
,使用的是System.IO.Compression
,但需要的程序集是System.IO.Compression.FileSystem
。报告正确地说明了这一点,但我很难找到它。