我希望能够在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\
,因此,我自己的应用程序创建的文件夹/文件中允许的字符数是大大减少了。
我尝试了什么:
鉴于this article中的背景,我尝试了以下内容,看看是否可以欺骗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)
。所以现在我没有想法。
答案 0 :(得分:0)
.NET不支持\?\文件路径。您需要依赖短文件名。
很糟糕,但有关于主题的MSKB:http://support.microsoft.com/kb/142982