Window Phone 7.5中的IsolatedStorage

时间:2012-08-18 08:57:57

标签: c# windows-phone-7

我正在使用Windows Phone 7.5中的IsolatedStorage。我试图从文件中读取一些文本。但是调试器说在IsolatedStorageFileStream上不允许该操作。为什么呢?

//Read the file from the specified location.
fileReader = new StreamReader(new IsolatedStorageFileStream("info.dat", FileMode.Open, fileStorage));
//Read the contents of the file (the only line we created).
string textFile = fileReader.ReadLine();

//Write the contents of the file to the MEssageBlock on the page.
MessageBox.Show(textFile);
fileReader.Close();

更新我的新代码

object _syncObject = new object();

                        lock (_syncObject)
                        {
                            using (var fileStorage = IsolatedStorageFile.GetUserStoreForApplication())
                            {

                                using (FileStream stream = new FileStream("/info.dat", FileMode.Open, FileAccess.Read, FileShare.Read))
                                {
                                    using (var reader = new StreamReader(stream))
                                    {


                                        string textFile = reader.ReadLine();
                                        MessageBox.Show(textFile);

                                    }
                                }
                            }


                        }

                    }

3 个答案:

答案 0 :(得分:0)

通常当我使用隔离存储时,我做过类似的事情:

using (var stream = fileStorage.OpenFile("info.dat", FileMode.Open))
{
    using (var reader = new StreamReader(stream))
    {
        ...
    }
}

...而不是直接在IsolatedStorageFileStream上调用构造函数。我不能肯定地说这是否会解决,但值得一试......

答案 1 :(得分:0)

只是一个猜测:

  • WP模拟器将在关闭时重置所有Isolatd存储内容
  • 如果你使用 FileMode.Open 和非现有文件的路径,你将获得 Operation not permited 例外。

您可以使用fileStorage.FileExists()检查文件是否存在或使用FileMode.OpenOrCreate

答案 2 :(得分:0)

试试这个,它对我有用:希望它也适合你

        String sb;

        using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (myIsolatedStorage.FileExists(fileName))
            {
                StreamReader reader = new StreamReader(new IsolatedStorageFileStream(fileName, FileMode.Open, myIsolatedStorage));

                sb = reader.ReadToEnd();

                reader.Close();
            }

            if(!String.IsNullOrEmpty(sb))
            {
                 MessageBox.Show(sb);
            }
        }

如果这不起作用,那么您的文件可能不存在。