Xamarin android数据保存到json文件
当方法OnDestroy
被调用时,我需要保存文件,并调用方法OnCreate
时加载相同的文件。在这个时候,我可以阅读从资产json
文件很容易(这工作正常)Xamarin android数据保存到json文件
StreamReader reader = new StreamReader(Assets.Open("reiksmes.json"));
string JSONstring = reader.ReadToEnd();
Daiktai myList = JsonConvert.DeserializeObject<Daiktai>(JSONstring);
items.Add(myList);
,但我有一些问题,当我尝试Daiktai
类数据存储(写)到我上面打开相同的文件。我想:
string data = JsonConvert.SerializeObject(items);
File.WriteAllText("Assets\\reiksmes.json", data);
这种尝试,我得到错误
System.UnauthorizedAccessException: Access to the path "/Assets eiksmes.json" is denied.
也试过:
string data = JsonConvert.SerializeObject(items);
StreamWriter writer = new StreamWriter(Assets.Open("reiksmes.json"));
writer.WriteLine(data);
以及与此尝试,我得到错误
System.ArgumentException: Stream was not writable.
总结: 我想我选择了坏目录(Assets
),我需要保存和加载数据(格式为json
)。那么我需要在哪里保存它们以及如何(举例)?
您无法将任何内容保存到资产。你可以从中读取它。您必须将该文件保存到其他文件夹。
var fileName = "reiksmes.json";
string documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); // Documents folder
var path = Path.Combine(documentsPath, fileName);
Console.WriteLine(path);
if (!File.Exists(path))
{
var s = AssetManager.Open(fileName);
// create a write stream
FileStream writeStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
// write to the stream
ReadWriteStream(s, writeStream);
}
好的,它的工作,但我现在可以在我的电脑上找到这个文件? – armandasalmd
您的意思是您的计算机上浏览设备文件系统? – neo
例如,如果我想自己修改这个文件,我需要搜索它来打开这个文件? – armandasalmd
资产,是指包含在应用程序包文件,并只读 – Jason
所以我在哪里需要保存的文件,你可以给我例子,如何拯救他们? – armandasalmd
资产是只读的,但是在你的字符串中你有'\ r'它应该是'\\ r'以避免它成为一个换行 –