像我之前的一些人一样,我对最大路径长度限制感到困惑。
我使用 robocopy 和新的 Windows 10 计算机成功地将文件树传输到 NAS。
在源计算机上,所有文件的长度限制为 260 个字符。使用 robocopy 将它们从路径 e: 复制到路径\nas-3tb-backup\Public\Save_2019。
后来我想用一个小的 C# 程序检查一下,但没有成功。
FileInfo 和 File.OpenRead 均无法通过 NAS 名称找到具有扩展路径的文件。
所有程序(如记事本、Visual Studio Code、Windows 资源管理器)在显示或打开此文件时都没有问题。
我尝试使用前缀\\?\,如下所示: https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maxpath但尝试\\?\\\nas-3tb-backup---- 失败了。
链接的文章中仍然有提示,以在更改注册表时扩展路径。我想避免这种情况,因为那样我就必须更换所有 Windows 计算机,并且由于 Windows 自己的程序无需注册表破解即可工作,这对我来说应该是可能的。
string fn1 = @"\\?\\\nas-3tb-backup\Public\VeryLongPathToFile";
bool b1 = new FileInfo(fn1).Exists;
if (b1) {
using (FileStream stream = File.OpenRead(fn1)) {
var b = stream.ReadByte();
}
}
最佳答案
您是否按照此处所述更改了 C# 解决方案中的 app.config 文件 .NET 4.6.2 and long paths on Windows 10 .
在这篇文章中,他在很长的路径中创建了一个文件夹,但也许它也会对您有所帮助。
他使用的代码:
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
</runtime>
关于c# - Windows 10 最大路径长度限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59392024/