我的Xamarin Android项目中有一个名为“ SaveData.xml”的文件。我无法将其保存在资产文件夹中,因为我需要在运行时对其进行写入。我正在尝试使用我的LoadXML()函数访问它:
XmlDocument doc = new XmlDocument();
XmlDocument saveData = new XmlDocument();
public void LoadXML()
{
saveData.Load("SaveData.xml");
//This bit works fine.
AssetManager assets = this.Assets;
using (StreamReader sr = new
StreamReader(assets.Open("Spices.xml")))
{
doc.Load(sr);
}
}
我尝试阅读它,但是所有答案都说只保存在资产文件夹中。我无法执行此操作,因为我需要先写入此文件,然后在每次应用启动时再次读取它。我还尝试将其放在资源文件夹中并更改生成操作。文件路径错误吗?我需要将其保存在其他地方吗?我很困惑。
编辑:很抱歉,没有具体说明。 “ saveData.Load(” SaveData.xml“)”引发文件未找到异常,我想知道为什么。
这是xml文件。
SaveData.xml
<?xml version="1.0" encoding="utf-8" ?>
<list>
<cupboard></cupboard>
<shoppingList></shoppingList>
</list>
答案 0 :(得分:0)
是的,如果您需要在运行时应用程序中写入xml,我们就不能将其放入资产文件夹,因为它是只读的。
此外,在执行saveData.Load("SaveData.xml")
时,您未指定目标目录,因此它默认为根目录,然后它将引发文件未找到异常。
因此,您需要将文件写入具有写访问权限的位置。 下面的代码将在用户的主目录中指定一个文件,该文件是可写的:
using System.IO;
string backingFile_path = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "SaveData.xml");
有关更多详细信息,您可以检查:https://docs.microsoft.com/en-us/xamarin/android/platform/files/
注意:此link中包含一个示例,您可以参考。