ZipFile.ExtractToDirectory提取长文件名文件时抛出异常求助
解决ZIP长路径文件提取失败的问题
你已经开启了Windows 10的长路径支持,但还是碰到了长文件名文件无法提取的问题,这大概率是解压工具本身不兼容长路径或者系统层面的长路径配置没完全落地导致的,下面给你几个针对性的解决方向:
1. 换用原生支持长路径的解压工具
很多传统解压工具(比如旧版WinRAR、早期7-Zip)默认没适配Windows的长路径规则,试试这两个方案:
- 升级到最新版7-Zip(v19.0及以上),它已经原生支持Windows长路径,直接正常提取即可
- 用Windows自带的PowerShell命令行解压,命令如下:
开启长路径支持后,PowerShell能完美处理长文件名文件。Expand-Archive -Path "你的压缩包完整路径" -DestinationPath "目标提取路径" -Force
2. 确认长路径配置完全生效
你虽然按说明做了配置,但可能存在遗漏:
- 检查注册表项
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem下的LongPathsEnabled值是否为1(DWORD类型),如果不是手动修改并重启电脑 - 如果你是用自己的.NET程序解压,要确保程序的配置文件(
app.config/web.config)里添加了以下配置,强制程序使用新的长路径规则:<configuration> <runtime> <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" /> </runtime> </configuration>
3. 临时缩短目标提取路径
如果上面的方法暂时没法落地,可以先把目标路径改得极短(比如直接放到D:\temp),提取完成后再把长路径文件移动到原本的目标位置——既然你能正常访问目标路径,移动操作是可以成功的。
4. 手动修改压缩包内的长文件名
有些压缩包可能是在非Windows系统下创建的,路径格式有特殊限制,可以用7-Zip打开压缩包后,手动给那个长路径文件重命名(缩短文件名),再进行提取操作。
内容的提问来源于stack exchange,提问作者doorman
相关产品推荐
相关产品推荐

