我正在尝试压缩很长的文件。我读过其他帖子,指出您应该在长文件名前加上“\\?\”前缀才能使其正常工作。这当然可以让压缩过程正确完成。但是,在解压缩文件时,出现错误“无效文件 \\?\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长路径”,这样它就不会被截断。
有一个库可以解决这些问题。
根据图书馆信息:
该库是专门为克服 .NET Framework 使用长路径和文件名的限制而编写的。使用此库,您可以以编程方式浏览、访问、写入、删除等 System.IO 命名空间无法访问的文件和文件夹。Delimon.Win32.IO 取代了 System.IO 的基本文件功能,并支持最多32,767 个 字符的文件和文件夹名称。该库是在 .NET Framework 4.0 上编写的,可在 x86 和 x64 系统上使用。
- 1 回答
- 0 关注
- 73 浏览
添加回答
举报
0/150
提交
取消