使用System.IO.Compression C#提取嵌套在zip文件中的文件

时间:2015-06-24 20:51:14

标签: c#

我有许多zip文件,其中包含嵌套在zip文件中子目录中的.txt文件。我试图提取.txt文件并将它们输出到另一个目录,但是我收到错误'找不到路径的一部分......'这个错误发生在'entry.FullName'点

我相信我需要在解压缩过程的某个阶段删除文件路径,因为如果我使用带有.txt文件的zip文件而没有任何子目录,我可以运行代码。任何指针都会非常感激。

这是我的代码:

class Program
{
    static void Main(string[] args)
    {

        DateTime dt = DateTime.Now;
        foreach (var zp in Directory.GetFiles(@"D:\\My Documents\\DMU\\Frontrunner2015\\ZipIn\\", "*.zip"))
        {
            string zipPath = zp;
            string extractPath = @"D:\\My Documents\\DMU\\Frontrunner2015\\ZipOut\\";

            using (ZipArchive archive = ZipFile.OpenRead(zipPath))
            {
                foreach (ZipArchiveEntry entry in archive.Entries)
                {
                    if (entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase))
                    {
                        entry.ExtractToFile(Path.Combine(extractPath, entry.FullName));
                    }
                    foreach (var file in Directory.GetFiles(extractPath))
                    {.....

1 个答案:

答案 0 :(得分:0)

如果您在错误消息中留下路径,那么人们可以看到找不到的路径会有所帮助。我猜想当你组合extractPath和FullName时,你最终会得到一个不存在的文件夹名称 - 正如你所提到的,zip文件中的文件有子目录。

我认为您真的打算在2 | Terms | 2 3 | Privacy | 1 电话中使用Name媒体资源。