我的应用程序确实遇到了一个令人沮丧的问题,我正在使用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.WriteAsyncFile.Open(string, FileMode, FileAccess, FileShare)结合使用。

在我看来,HoloLens需要带有FileMode.OpenFileAccess.WriteFileShare.WriteFile.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/

10-12 05:49