【问题标题】:C# Windows RT file name too longC# Windows RT 文件名太长
【发布时间】:2013-11-26 03:35:44
【问题描述】:

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

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

在我的例子中,我有一个较短的名称,但基本路径仍然占用 101 个字符

【问题讨论】:

  • 您能否创建一个短文件名映射并在请求更长的文件名时使用它们?
  • 我找不到使用 StorageFolder 或 StorageFile API 的方法。
  • 您需要存储地图。它不会成为 API 的一部分。

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


【解决方案1】:

windows 中的路径一般限制为 260 个字符:

来自http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

最大路径长度限制

在 Windows API 中(下面将讨论一些例外情况 段落),路径的最大长度为 MAX_PATH,即 定义为 260 个字符。本地路径的结构如下 顺序:驱动器号、冒号、反斜杠、名称组件以分隔 反斜杠和终止空字符。例如, 驱动器 D 上的最大路径是“D:\some 256-character path string” 其中“”表示不可见的终止空字符 当前系统代码页。 (字符 在这里用于 视觉清晰,不能成为有效路径字符串的一部分。)

注意 Windows API 中的文件 I/O 函数将“/”转换为“\”作为一部分 将名称转换为 NT 风格的名称,除非使用 "\\?\" 前缀,详见下文。

Windows API 有许多函数也有 Unicode 版本 允许一个扩展长度的路径,最大总路径长度为 32,767 个字符。这种类型的路径由组件组成 用反斜杠分隔,每个不超过返回的值 GetVolumeInformation 的 lpMaximumComponentLength 参数 函数(此值通常为 255 个字符)。指定一个 扩展长度路径,使用“\\?\”前缀。例如,“\\?\D:\very 长路”。

不确定 "\\?\" 在 RT 下是否有效。通常在 windows 下使用很长的路径名并不是一个特别好的主意(我个人认为一般来说这不是一个好主意)。或许您可以通过扁平化结构进行重组以缩短路径长度?

【讨论】:

  • 不幸的是,当您从 Web 下载更新的内容时,Microsoft 会强制您使用本地存储。
猜你喜欢
  • 2018-04-28
  • 2014-04-29
  • 2019-05-06
  • 2021-08-14
  • 1970-01-01
  • 2014-05-30
  • 2015-04-18
  • 2022-12-13
相关资源
最近更新 更多