在进行访问文件的时候,可能会因为文件的路径太长无法创建访问文件 本文告诉大家如何支持长路径的读写
先创建简单的程序,在界面放一个按钮,在按钮点击的事件尝试写一个文件名很长的文件
运行程序点击按钮会发现 var file = new FileInfo(str);
说文件名太长
可以通过限定路径的方法解决
在运行输入 gpedit.msc 打开策略编辑器
点击计算机配置-管理模板-所有设置,找到启用win32长路径选项
点击编辑策略设置,启用
如果要在应用程序可以使用长的文件名,当然单个文件名不能超过 265 字符,但是文件所在路径可以超过。需要在 .NET 4.6.2 以上,添加清单
在清单 app.manifest 添加下面代码
此时可以尝试写长路径
那么在 dotnet core 下呢?其实在 dotnet core 的行为完全不同,通过 Support long file names on Windows · Issue #14062 · dotnet/runtime 可以了解到,在 dotnet core 古老的版本就更改了行为
在 dotnet/corefx#3001 和 dotnet/corefx#3010 的更改,可以看到在 dotnet core 内部转换为 UNC 路径,可以自动解决路径问题,但是依然要求是 win10 下
Naming Files, Paths, and Namespaces - Windows applications
Long Paths in .NET, Part 1 of 3 [Kim Hamilton] – BCL Team Blog
Long Paths in .NET, Part 2 of 3: Long Path Workarounds [Kim Hamilton] – BCL Team Blog
Long Paths in .NET, Part 3 of 3 Redux [Kim Hamilton] – BCL Team Blog
More on new .NET path handling – Jeremy Kuhne’s Blog
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。 欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。