1

所以我一直在做一个简单的游戏,我想实现一个高分系统。一旦播放器第一次加载主页,就会创建一个新的文本文件(“hsc.txt”)并插入一些假值,这些值稍后会被程序拆分,但是,目前我的代码会抛出 aSystem.IO.IsolatedStorage.IsolatedStorageException并且我似乎找不到问题。我查看了从消息框中得到的错误“ - operation not permitted”,但发布的所有解决方案似乎都不起作用。我已经尝试关闭流,但它似乎不起作用。

任何建议将不胜感激。

 private void hasHighscores()
      {
        String fileName = "hsc.txt";
        using  (var isoStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (!isoStorage.FileExists(fileName))
            {
                isoStorage.CreateFile(fileName);

                       using (var isoStream = new IsolatedStorageFileStream(fileName,   FileMode.Append, FileAccess.Write, isoStorage))
                    {
                        using (var fileStream = new StreamWriter(isoStream))
                        {
                            fileStream.WriteLine("n1:666,n2:777,n3:888,h1:666,h2:777,h3:888");
                            fileStream.Close();
                        }
                        isoStream.Close();

                    }
            }
        }  
    }

到目前为止,我已经:a)更改了 FileMode b)更改了 FileAccess 和一些我什至不记得的其他“快速修复”。

4

1 回答 1

1

CreateFile方法将流返回到创建的文件,并保持打开状态。因此,当您尝试在下一行中打开同一文件的流时,它会引发异常,因为该文件已被锁定。

您可以按如下方式重写代码:

 private void hasHighscores()
 {
        String fileName = "hsc.txt";
        using  (var isoStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (!isoStorage.FileExists(fileName))
            {
                using (var isoStream = isoStorage.CreateFile(fileName))
                {
                    using (var fileStream = new StreamWriter(isoStream))
                    {
                        fileStream.WriteLine("n1:666,n2:777,n3:888,h1:666,h2:777,h3:888");
                    }  
                }
            }
        }  
    }

我也删除了stream.Close()说明。当您将流包含在using语句中时,将自动调用 close 方法。

于 2013-08-16T11:16:56.490 回答