在隔离存储中保存多个值

时间:2014-03-18 07:33:13

标签: c# wpf silverlight windows-phone isolatedstorage

我正在开发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;

但是在上面的代码中,每次替换值而不是添加到以前的值。

如何将尝试及其值添加到同一个文件中?

1 个答案:

答案 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异常。"