0

我正在使用 Windows Phone 7.5 中的独立存储。我正在尝试从文件中读取一些文本。但调试器说,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();

更新我的新代码

对象 _syncObject = 新对象();

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

                                    }
                                }
                            }


                        }

                    }
4

3 回答 3

0

只是一个猜测:

  • WP 模拟器将在关闭时重置所有 Isolatd 存储内容
  • 如果您将FileMode.Open与一个不存在的文件的路径一起使用,您将获得Operation not allowed异常。

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

于 2012-08-20T08:06:22.027 回答
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);
            }
        }

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

于 2012-08-20T12:19:36.307 回答
0

通常,当我使用隔离存储时,我会执行以下操作:

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

...而不是直接在IsolatedStorageFileStream. 我不能确定这是否会解决问题,但值得一试......

于 2012-08-18T09:22:29.853 回答