IsolatedStorageFile不写入文件

时间:2012-11-18 20:59:34

标签: c# persistence isolatedstorage

我必须在会话之间存储控件的内容。这就是我的工作:

    private void Window_Closing(object sender, CancelEventArgs e)
    {
        IsolatedStorageFile f = IsolatedStorageFile.GetUserStoreForAssembly();
        using(IsolatedStorageFileStream stream = new IsolatedStorageFileStream("somefilename", FileMode.Create, f))
        using(StreamWriter writer = new StreamWriter(stream))
        {
            foreach(string path in searchFoldersListView.Items)
            {
                writer.WriteLine(path);
            }
        }
    }

这附加到窗口的Closing事件。在调试时,控件会遍历所有项目,但是当我再次运行程序时,控件为空。事实证明,当我导航到文件时,它是空的。当我通过在foreach循环中放置File.AppendAllText()来更改代码以保存到常规文件时,该文件保存得很好。那是为什么?

编辑:阅读事件处理程序:

    private void Window_Initialized(object sender, EventArgs e)
    {
        IsolatedStorageFile f = IsolatedStorageFile.GetUserStoreForAssembly();
        using(IsolatedStorageFileStream stream = new IsolatedStorageFileStream("somefilename", FileMode.OpenOrCreate, f))
        using(StreamReader reader = new StreamReader(stream))
        {
            string line = reader.ReadLine();
            while(line != null)
            {
                searchFoldersListView.Items.Add(line);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

您的方法中存在从文件中读取的错误。您只读取了可能为null的第一行。请尝试以下方法:

    using(StreamReader reader = new StreamReader(stream))
    {
        string line = reader.ReadLine();
        while(line != null)
        {
            searchFoldersListView.Items.Add(line);
            line = reader.ReadLine();
        }
    }