我的应用程序确实遇到了一个令人沮丧的问题,我正在使用Vuforia,并且试图从运行时编辑XML并将其保存在streamingassets中,但是,我收到以下异常:Unauthorizedaccessexception ...拒绝访问路径。
我试图通过简单地使用将XMLDocument保存到路径来保存这两者,这是我获得Unauthorizedaccessexception的地方,但是也尝试了Windows.Storage命名空间,在这里我得到了一个例外,说我的路径无效。
在这里我得到Unauthorizedaccessexception:
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使用的文件夹的位置? 最佳答案
在HoloLens上,我也遇到了麻烦。
您可能希望将StreamWriter.WriteAsync
与File.Open(string, FileMode, FileAccess, FileShare)
结合使用。
在我看来,HoloLens需要带有FileMode.Open,FileAccess.Write和FileShare.Write的File.Open
。
我也建议使用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
。并且仅构建到持久数据路径。流媒体资产在构建的应用程序中可能是只读的。在智能手机上输入内容,因此没有保修,但我希望这个想法能弄清楚
关于c# - 如何从Hololens中编辑Streamingassets中的XML文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56041380/