首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >写到windows 7中的隔离存储

写到windows 7中的隔离存储
EN

Stack Overflow用户
提问于 2011-07-29 00:59:18
回答 1查看 2.4K关注 0票数 0

我正在尝试从隔离存储中读取,如果存在该文件,它将在重新创建该文件之前删除整个文件和目录。

如果文件不存在,它将创建文件和目录。

下面是我的代码:在写文件的隔离存储中,我得到了一个不允许操作的错误。

int indexQues;

代码语言:javascript
复制
    string rate;
    string[] queSplit;
    string[] rateSplit;
    private void saveBtn_Click(object sender, RoutedEventArgs e)
    {
        indexQues = queListPicker.SelectedIndex;
        rate = rateListPicker.SelectedItem.ToString();

        IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();

        try
        {
        //For question
        StreamReader readFileQue = new StreamReader(new IsolatedStorageFileStream("SettingFolder\\queSetting.txt", FileMode.Open, myStore));
        //For passing rate
        StreamReader readFileRate = new StreamReader(new IsolatedStorageFileStream("SettingFolder\\queSetting.txt", FileMode.Open, myStore));

        String queText = readFileQue.ReadLine();
        queSplit = queText.Split(new char[] { '^' });

        String rateText = readFileRate.ReadLine();
        rateSplit = rateText.Split(new char[] { '^' });


        readFileQue.Close();
        readFileRate.Close();

        int noOfQueInDB = queSplit.Count();
        int noOfRateInDB = rateSplit.Count();

        MessageBox.Show(noOfQueInDB.ToString());

        //if (noOfQueInDB == 2)
        //{
            myStore.DeleteFile("SettingFolder\\queSetting.txt");
            myStore.DeleteFile("SettingFolder\\rateSetting.txt");
           myStore.DeleteDirectory("SettingFolder");
            MessageBox.Show("Deleted all");

            myStore.CreateDirectory("SettingFolder");

            //Retrieve the content of "noOfQues"
            //And write it into queSetting.txt
            StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("SettingFolder\\queSetting.txt", FileMode.Create, myStore));
            writeFile.Write(indexQues);
            // writeFile.Write("^" + indexQues);
            writeFile.Close();

            StreamWriter writeFile1 = new StreamWriter(new IsolatedStorageFileStream("SettingFolder\\rateSetting.txt", FileMode.Create, myStore));
            writeFile1.Write(rate);
            writeFile1.Close();


            MessageBox.Show("Setting Saved");
            MessageBox.Show(indexQues.ToString());
            MessageBox.Show(rate);
            NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
        //}
        }
        catch (Exception)
        {

            myStore.CreateDirectory("SettingFolder");

            //Retrieve the content of "noOfQues"
            //And write it into queSetting.txt

            // ****
            // **** The following line throws an exception 
            // ****
            StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("SettingFolder\\queSetting.txt", FileMode.Create, myStore));
            writeFile.Write(indexQues);
            // writeFile.Write("^" + indexQues);
            writeFile.Close();

            StreamWriter writeFile1 = new StreamWriter(new IsolatedStorageFileStream("SettingFolder\\rateSetting.txt", FileMode.Create, myStore));
            writeFile1.Write(rate);
            writeFile1.Close();


            MessageBox.Show("Setting Saved");
            MessageBox.Show(indexQues.ToString());
            MessageBox.Show(rate);
            NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));

        }

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-29 01:42:31

有一点--这似乎不对(您打开同一文件两次?):

代码语言:javascript
复制
 //For question
    StreamReader readFileQue = new StreamReader(new IsolatedStorageFileStream("SettingFolder\\queSetting.txt", FileMode.Open, myStore));
    //For passing rate
    StreamReader readFileRate = new StreamReader(new IsolatedStorageFileStream("SettingFolder\\queSetting.txt", FileMode.Open, myStore));

第二点--您应该使用Dispose:

代码语言:javascript
复制
    readFileQue.Close(); readFileQue.Dispose(); readFileQue = null;
    readFileRate.Close(); readFileRate.Dispose(); readFileRate = null;

第三点--在创建文件时使用适当的FileAccess:

代码语言:javascript
复制
StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("SettingFolder\\rateSetting.txt",
                        FileMode.Create,
                        FileAccess.Write,
                        FileShare.Write,
                        myStore);

希望上面能帮上忙..。如果不检查目录是否真的创建了.

编辑:

您确定Exception是从catch-block中抛出的吗?如果是这样的话,那么一定是在那之前发生了一些Exception --那Exception是什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6867540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档