我希望能够在LocalCacheFolder
之内创建文件和文件夹,而不用担心总路径长度超过248个字符,这在我的应用程序中目前是个问题。除了让我的应用程序生成更短的路径并避免嵌套之外,处理这个问题的好方法是什么?如何在WinRT中绕过MAX_PATH?
其他方面:
我发现,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\
,因此,可以在我的自己的应用程序,创建的文件夹中的字符数/文件大大减少常有发生。
我曾尝试:
鉴于this article的背景下,我尝试以下,看看我是否能欺骗的WinRT到使用Win32文件的命名空间,这在理论上给我的Unicode路径与最大长度32,767个字符:
var path = Windows.Storage.ApplicationData.Current.LocalCacheFolder.Path;
var cacheFolder = await StorageFolder.GetFolderFromPathAsync(@"\\?\" + p);
此尝试失败,例外情况为:The specified path is invalid. (Exception from HRESULT: 0x800700A1)
。所以现在我没有想法。
也许你可以试试[CreateFile2](http://msdn.microsoft.com/en-us/library/windows/desktop/hh449422%28v = vs.85%29.aspx)? –