繁体   English   中英

在Windows Phone 7中写入隔离存储

[英]Writing to isolated storage in windows phone 7

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

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

下面是我的代码:我在写文件的隔离存储中出现了不允许的操作错误

int indexQues;

    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));

        }

}

一点-这似乎是错误的(您两次打开同一个文件?):

 //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:

    readFileQue.Close(); readFileQue.Dispose(); readFileQue = null;
    readFileRate.Close(); readFileRate.Dispose(); readFileRate = null;

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

StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("SettingFolder\\rateSetting.txt",
                        FileMode.Create,
                        FileAccess.Write,
                        FileShare.Write,
                        myStore);

希望以上内容能对您有所帮助...

编辑:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM