首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >长文件名上的ZipFile.ExtractToDirectory抛出

长文件名上的ZipFile.ExtractToDirectory抛出
EN

Stack Overflow用户
提问于 2018-03-08 16:15:10
回答 2查看 2.3K关注 0票数 4

我正在提取像这样的压缩文件

代码语言:javascript
复制
ZipFile.ExtractToDirectory(zipFile, extractTo);

但我得到了一个

代码语言:javascript
复制
{"Could not find a part of the path 'C:\\....many subfolders\\Extremely long filename'."}

zip文件包含一个具有非常长路径的文件,文件名为c.a。共280个字符。我不确定这是否是我启用了长路径的问题,如这里所演示的,https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/

如果我在资源管理器中打开路径,它将打开,但是带有长文件名的文件不在那里。如果我打开zip文件,文件就在那里,所以使用长文件名提取文件似乎有问题。

在压缩提取过程中是否可以跳过文件,或者允许使用长文件名提取文件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-08 16:19:27

代码语言:javascript
复制
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
    foreach (ZipArchiveEntry entry in archive.Entries)
    {
        if (entry.FullName.Length > 280)
            continue;

        entry.ExtractToFile(Path.Combine("your path", entry.FullName));
    }
} 

ZipFile.OpenRead将允许您检查zip文件的内容。然后,您可以通过.Entries属性枚举以查找存档中的所有文件,并决定是否要根据文件名长度进行提取。

票数 1
EN

Stack Overflow用户

发布于 2018-03-08 16:44:11

如果使用的是基于Windows的文件系统,则文件名的最大长度为255个字符。注意:在计算文件名长度时,文件夹路径包含在文件名中。如果您有一个很长的文件夹路径,那么您可能需要尝试解压到c:\temp,它只使用7个字符。这样,您就可以使用248个字符。如果您的文件名比存档中的文件名长,您可能需要先解决这个问题,这样您就不必从解压缩中排除文件。

https://msdn.microsoft.com/en-us/library/windows/desktop/ee681827(v=vs.85).aspx

fat.htm

Maximum filename length in NTFS (Windows XP and Windows Vista)?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49177684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档