如何从Hololens中在Streamingassets中编辑XML文件

时间:2019-05-08 12:58:13

标签: c# unity3d vuforia hololens

我的应用程序遇到了一个非常令人沮丧的问题,我正在使用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使用的文件夹的位置?

1 个答案:

答案 0 :(得分:3)

在HoloLens上,我也遇到了麻烦。

您可能希望将StreamWriter.WriteAsyncFile.Open(string, FileMode, FileAccess, FileShare)结合使用。

在我看来,HoloLens需要File.OpenFileMode.OpenFileAccess.WriteFileShare.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。并且仅构建到持久数据路径。 可能流媒体资产仅在内置应用中是只读的。


在智能手机上键入内容,因此没有保修,但我希望这个想法会清楚