c# - Windows 10 最大路径长度限制

标签 c# path limit long-filenames max-path

像我之前的一些人一样,我对最大路径长度限制感到困惑。 我使用 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/

相关文章:

mysql - 有没有办法从每个查询中获取 2 行?

MySQL 限制/偏移 : get all records except the first X

c# - 判断小数是否大于四位

c# - 如何在统一编辑器中使用 Input.Location 和模拟位置

c# - ConfigurationProperty 由于其保护级别而无法访问

java - Liferay portlet 和相对路径

c# - Quartz.Net Schedular IsStarted 属性在 UnScheduleJobs、Shutdown、PauseAll、DeleteJobs 和 GetCurrentlyExecutingJob 等之后始终保持 true

python - 在python中将mac路径转换为posix

linux - Unix 和 Windows 路径之间的所有区别是什么?

mysql限制子查询