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

本文关键字:文件 IO 压缩 嵌套 System 提取 zip 使用 | 更新日期: 2023-09-27 17:59:38

我有许多zip文件,其中包含嵌套在zip文件子目录中的.txt文件。我正在尝试提取.txt文件并将其输出到另一个目录,但我收到了一个错误"找不到路径的一部分…"此错误发生在"条目处。FullName点

我认为我需要在解压缩过程的某个阶段删除文件路径,因为如果我使用zip文件和.txt文件,而不使用任何子目录,我就可以运行代码。任何建议都将不胜感激。

这是我的代码:

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))
                    {.....

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

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

我认为您确实想在Path.Combine调用中使用Name属性。