我创建了一个主屏幕小部件,它从网站获取字符串表。我不想在每次更新时从网络上获取数据,而是想将表格保存到手机中,而不是在更新时从文件中读取。我正在使用 Mono for Android (C#)。
问问题
1916 次
2 回答
2
这是一种使用 XML 序列化将数据保存到文件系统的方法
public static bool SaveData<T>(Context context, string fileName, T data)
{
try
{
using (Stream stream = context.OpenFileOutput(fileName, FileCreationMode.Private))
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
xmlSerializer.Serialize(stream, data);
}
return true;
}
catch (Exception)
{
return false;
}
}
这是从文件系统加载序列化数据的方法
public static T LoadData<T>(Context context, string fileName)
{
Java.IO.File file = context.GetFileStreamPath(fileName);
if (file.Exists())
{
using (Stream openStream = context.OpenFileInput(fileName))
{
using (StreamReader reader = new StreamReader(openStream))
{
try
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
var loadedObject = serializer.Deserialize(reader);
return (T)loadedObject;
}
catch (Exception ex)
{
// TODO Handle error
return default(T);
}
}
}
}
else
{
throw new Java.IO.FileNotFoundException("Could not find file " + fileName);
}
}
使用这些方法,您可以轻松地保存和加载任何可序列化的对象,例如string[]
从网站检索到的对象。
string[] data = { "one", "two", "three" };
JavaIO.SaveData(this, "SavedData.txt", data);
string[] loadedData = JavaIO.LoadData<string[]>(this, "SavedData.txt");
于 2012-11-12T06:11:31.900 回答
1
如果它只是一个简单的列表,那么您可以使用 System.IO.File 加载/保存文本 - 您可以使用 JSON.Net 之类的东西将列表转换为文本。
如果您的数据更加增量,那么您可以改用 SQLite - 尝试 GitHub 上的 SQLite-net ORM 包装器
于 2012-11-11T14:51:42.060 回答