我有一个应用程序,可以在appdata下的本地存储中运行,从网上下载新内容并在本地显示。我发现文件名较长的内容会引发路径太长的异常。
这非常糟糕,因为我无法控制内容中的层次结构级别和文件名长度。是否有快捷方式或短名称(类似于8.3),我可以使用它来确保我没有丢失大部分文件路径长度?即C:\ Users {user} \ AppData \ Local \ Packages {appid} \ LocalState ...
在我的情况下,我有一个较短的名字,但基本路径仍然占用了101个字符
答案 0 :(得分:1)
Windows中的路径通常限制为260个字符:
来自http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx
最大路径长度限制
在Windows API中(以下讨论了一些例外情况) 段落),路径的最大长度是MAX_PATH,即 定义为260个字符。本地路径的结构如下 顺序:驱动器号,冒号,反斜杠,名称组件分隔 反斜杠和终止空字符。例如, 驱动器D上的最大路径是“D:\某些256个字符的路径字符串” 其中“”表示不可见的终止空字符 当前的系统代码页。 (字符<>用于此处 视觉清晰度,不能成为有效路径字符串的一部分。)
注意Windows API中的文件I / O函数将“/”转换为“\”作为一部分 将名称转换为NT样式的名称,除非使用 “\\?\”前缀详见以下部分。
Windows API具有许多也具有Unicode版本的函数 允许一个扩展长度的路径,最大总路径长度为 32,767个字符。这种类型的路径由组件组成 用反斜杠分隔,每个都取决于返回的值 GetVolumeInformation的lpMaximumComponentLength参数 function(此值通常为255个字符)。指定一个 扩展长度路径,使用“\\?\”前缀。例如,“\\?\ D:\ very 漫长的道路“。
不确定“\\?\”是否可在RT下运行。通常在Windows下使用非常长的路径名称并不是一个特别好的主意(我个人认为这不是一个好主意)。也许您可以通过展平结构来重组以减少路径长度?