C#Windows RT文件名太长

时间:2013-11-21 15:51:01

标签: c# file windows-runtime windows-store-apps

我有一个应用程序,可以在appdata下的本地存储中运行,从网上下载新内容并在本地显示。我发现文件名较长的内容会引发路径太长的异常。

这非常糟糕,因为我无法控制内容中的层次结构级别和文件名长度。是否有快捷方式或短名称(类似于8.3),我可以使用它来确保我没有丢失大部分文件路径长度?即C:\ Users {user} \ AppData \ Local \ Packages {appid} \ LocalState ...

在我的情况下,我有一个较短的名字,但基本路径仍然占用了101个字符

1 个答案:

答案 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下使用非常长的路径名称并不是一个特别好的主意(我个人认为这不是一个好主意)。也许您可以通过展平结构来重组以减少路径长度?