none
SilverLight中,IsolatedStorageFile新建文件,写入再次打开,报错。 RRS feed

  • 问题

  • 程序基本结构如下,问题是
    1)通过 IsolatedStorageFile创建的文件,第一次打开写入(即点击save按钮),没有问题;第二次打开读出(点击load按钮)的时候,就会报
    "Operation not permitted on IsolatedStorageFileStream."错误。
    但是,关闭浏览器,再次通过浏览器打开后,直接点击load按钮,又可以把文件加载成功。

    是不是IsolatedStorageFile文件句柄什么的,在第一次打开后,没有关闭?如果是的话,应该如何关闭呢?

    2)通过IsolatedStorageFile创建的文件,在系统中能存在多长时间呢?浏览器关闭后,仍然存在?电脑重启后,也会存在?

    多谢各位牛人:)
    =============================================================================
           // 点击“Save”按钮,触发该函数
            public static void SaveProfile()
            {
                try
                {
                    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
                    {
                        if (store.FileExists("Profile.bin"))
                        {
                            store.DeleteFile("Profile.bin");
                        }

                        IsolatedStorageFileStream profileFile = store.CreateFile("Profile.bin");
                        profileFile.Close();

                        XElement xeDoc = new XElement("Profile");
              ......
                        //插入相应XElements,并保存
                        xeDoc.Save(store.OpenFile("Profile.bin", FileMode.Open, FileAccess.Write));
                    }
                }
                catch (Exception ex)
                {
                    throw (ex);
                }
            }       
        
        // 点击“Load”按钮,触发该函数
            public static void LoadProfile()
            {
                try
                {
                    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
                    {
                        if (store.FileExists("Profile.bin"))
                        {
                          // 加载刚才保存的文件,但是保存后,立即加载就会报
                          // 关闭IE后,再次打开,点击“Load”按钮,又可以加载成功????
                            XElement xeDoc = XElement.Load(store.OpenFile("Profile.bin", FileMode.Open, FileAccess.Read));
                            .....
                            //加载XElements
                        }
                        else
                            throw (new Exception("Profile does not exist!"));
                    }
                }
                catch (Exception ex)
                {
                    throw (ex);
                }
            }

    2012年8月28日 7:08

答案