1

我希望能够在其中创建文件和文件夹,LocalCacheFolder而不必担心总路径长度将超过 248 个字符,这目前是我的应用程序中的一个问题。除了让我的应用程序生成更短的路径并避免嵌套之外,还有什么好方法可以解决这个问题?

附加上下文:

我发现 WinRT 应用程序容易受到 MAX_PATH 限制。在我的应用程序中,当我打电话时StorageFolder.CreateFileAsync收到一条System.IO.PathTooLongException消息:

“指定的路径、文件名或两者都太长。完全限定文件名必须小于 260 个字符,目录名必须小于 248 个字符。”

在 中创建一些嵌套子文件夹时经常发生这种情况Windows.Storage.ApplicationData.Current.LocalCacheFolder,因为 LocalCacheFolder 实际上是C:\Data\Users\DefApps\APPDATA\Local\Packages\<my_package>\LocalCache\,因此,我自己的应用程序创建的文件夹/文件中允许的字符数大大减少。

我试过的:

鉴于本文的背景,我尝试了以下操作,看看是否可以欺骗 WinRT 使用 Win32 文件命名空间,理论上这会给我提供最大长度为 32,767 个字符的 Unicode 路径:

var path = Windows.Storage.ApplicationData.Current.LocalCacheFolder.Path;
var cacheFolder = await StorageFolder.GetFolderFromPathAsync(@"\\?\" + p);

此尝试失败,但出现异常:The specified path is invalid. (Exception from HRESULT: 0x800700A1)。所以现在我没有想法了。

4

1 回答 1

0

.NET 不支持 \?\ 文件路径。您需要依赖短文件名。

它很烂,但有一个关于该主题的 MSKB:http: //support.microsoft.com/kb/142982

于 2014-07-14T06:07:56.140 回答