我希望能够在其中创建文件和文件夹,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)
。所以现在我没有想法了。