我正在开发Windows Phone 8应用程序。在我的申请中,我必须存储每次尝试的分数。
例如:
第一次尝试:橙子10,苹果20,芒果30。
第二次尝试:橙子5,苹果20,芒果25。
第3次尝试:橙子15,苹果25,芒果5。
依旧......
我有一张评分表,我需要显示每次尝试的值。
这就是我尝试保存值的方法:
写入值
try
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
using (StreamWriter sw = new StreamWriter(store.OpenFile(myObject.Title + "_State.xml", FileMode.Create, FileAccess.Write)))
{
XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
serializer.Serialize(sw, myObject);
serializer = null;
}
}
}
catch (Exception)
{
throw;
}
阅读
MyObject myObject = null;
try
{
using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
// Read application settings.
if (isoStore.FileExists((myObject.Title + "_State.xml"))
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
using (StreamReader SR = new StreamReader(store.OpenFile((myObject.Title + "_State.xml", FileMode.Open, FileAccess.Read)))
{
XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
myObject = (MyObject)serializer.Deserialize(SR);
serializer = null;
}
}
}
else
{
// If setting does not exists return default setting.
myObject = new MyObject();
}
}
}
catch (Exception)
{
throw;
}
return myObject;
但是在上面的代码中,每次替换值而不是添加到以前的值。
如何将尝试及其值添加到同一个文件中?
答案 0 :(得分:2)
在将文件写入FileMode.Append
而不是FileMode.Create
时尝试更改FileMode:
store.OpenFile(myObject.Title + "_State.xml", FileMode.Append, FileAccess.Write)
关于FileMode.Append
来自上述MSDN链接:
" 打开文件(如果存在)并寻找文件末尾或创建新文件。这需要FileIOPermissionAccess.Append权限。 FileMode.Append只能与FileAccess.Write一起使用。尝试在文件结束之前寻找位置会抛出IOException异常,并且任何读取尝试都会失败并抛出NotSupportedException异常。"