为了账号安全,请及时绑定邮箱和手机立即绑定

压缩带有前缀 \\?\ 的长文件会导致无效的 zip 存档

压缩带有前缀 \\?\ 的长文件会导致无效的 zip 存档

C#
皈依舞 2023-09-16 17:41:15
我正在尝试压缩很长的文件。我读过其他帖子,指出您应该在长文件名前加上“\\?\”前缀才能使其正常工作。这当然可以让压缩过程正确完成。但是,在解压缩文件时,出现错误“无效文件 \\?\myfile.txt”。这意味着它实际上是使用预先添加的长文件名指示符来压缩我的文件。可以用长文件名进行压缩吗?using (ZipArchive zip = ZipFile.Open(zipfinalpath, ZipArchiveMode.Create)){    for (int i = 0; i < fullfilepaths.Count; i++)    {        zip.CreateEntryFromFile(fullfilepaths[i], zipfilepaths[i]);    }}
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

Windows 文件名中的最大字符数限制为260 个字符。在 .NET 4.6.2 及更高版本中,PathTooLong不再引发异常。所以你的代码工作正常。

在 4.6.2 中,如果我们看到 >= MAX_PATH 的路径,我们将不再抛出 PathTooLongException。如果操作系统不喜欢它,我们将显示操作系统返回的任何错误(可能是 PathTooLong),但我们不会再次猜测操作系统会做什么。

在本地组策略编辑器中,您可以“启用Win32长路径”,这样它就不会被截断。

https://img1.sycdn.imooc.com/6505786d00011cd206480453.jpg

有一个库可以解决这些问题。

根据图书馆信息:

该库是专门为克服 .NET Framework 使用长路径和文件名的限制而编写的。使用此库,您可以以编程方式浏览、访问、写入、删除等 System.IO 命名空间无法访问的文件和文件夹。Delimon.Win32.IO 取代了 System.IO 的基本文件功能,并支持最多32,767 个 字符的文件和文件夹名称。该库是在 .NET Framework 4.0 上编写的,可在 x86 和 x64 系统上使用。


查看完整回答
反对 回复 2023-09-16
  • 1 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信