之前有说过在win10下启用长路径的问题问题 win10下长路径异常,但是在unity的项目里,还是有些代码在堆长路径有异常的!
路径的问题
在默认的情况下,使用的通常是相对目录或者是类似c:/some/some1/name.txt
这样的路径,但是当路径超过260的时候,基本所有操作结果返回的都是Could not find a part of the path
!
https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd
官方给了这样的解决方案\\?\
!
但是有几个注意事项:
- 所有的
/
都必须转换成\
- 必须是完整的路径,eg:
E:\a\b\c.txt
- 不能有
..
之类的目录转换
判定文件是否存在
// 常用方式
File.Exists(dstPath)
// 长路径
var f = new FileInfo(dstPath);
f.Exists
删除文件
// 常用方式
File.Delete(newdstPath);
// 长路径
var f = new FileInfo(newdstPath);
if(f.Exists)
f.Delete();
移动文件文件
// 常用方式
File.Move(srcPath, dstPath);
// 长路径
// 长路径的转换
string newdstPath = $"//?/{dstPath}";
newdstPath = newdstPath.Replace("/", "\\");
string newsrcPath = $"//?/{srcPath}";
newsrcPath = newsrcPath.Replace("/", "\\");
File.Move(newsrcPath, newdstPath);
PREVIOUS光栅化算法