我的应用程序遇到了一个非常令人沮丧的问题,我正在使用Vuforia,并且尝试从运行时编辑XML并将其保存在streamingassets中,但是,我遇到了以下异常:Unauthorizedaccessexception ...访问路径被拒绝。
我试图通过仅将XMLDocument保存到路径来保存,这是我获得Unauthorizedaccessexception的地方,但是也尝试了Windows.Storage命名空间,在这里我得到了一个例外,说我的路径无效。
在这里,我得到了未经授权的访问异常:
xmlDoc.Save(path);
在这里,我得到的路径是无效的。
var folderPath = Path.Combine(Application.streamingAssetsPath, "Vuforia");
StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(folderPath);
StorageFile textFile = await folder.GetFileAsync("Warehouse.xml");
await FileIO.WriteTextAsync(textFile, str);
使用var folderPath = Path.Combine(Application.persistentDataPath);
与xmlDoc.Save(path);
保存文件非常有效。但是由于Vuforia仅能够访问StreamingAssets中的图像目标,所以我无法执行此操作(对吗?)。那么,有谁知道我在做什么错,我该怎么做才能访问StreamingAssets文件夹或更改Vuforia使用的文件夹的位置?
答案 0 :(得分:3)
在HoloLens上,我也遇到了麻烦。
您可能希望将StreamWriter.WriteAsync
与File.Open(string, FileMode, FileAccess, FileShare)
结合使用。
在我看来,HoloLens需要File.Open
和FileMode.Open,FileAccess.Write和FileShare.Write。
我也建议使用Path.Combine(string, string, string)
类似
var filePath = Path.Combine(Application.streamAssetsPath, "Vuforia", "Warehouse.xml");
using(var fileStream = File.Open(filePath, FileMode.Open, FileAccess.Write, FileShare.Write))
{
using (var writer = new StreamWritet(fileStream))
{
await writer.WriteAsync(textFile);
}
}
过去,这通常对我有用。
但是请注意,老实说,我从来没有尝试过仅通过编辑器脚本中的UnityEditor在构建中写入streamingAssetsPath
。并且仅构建到持久数据路径。 可能流媒体资产仅在内置应用中是只读的。
在智能手机上键入内容,因此没有保修,但我希望这个想法会清楚