2013-08-16 4 views
1

Итак, я работал над простой игрой, и я хотел реализовать рекордерную систему. Как только игрок загружает основную страницу в первый раз, создается новый текстовый файл («hsc.txt») и вставляются некоторые поддельные значения, которые позже делятся на программу, однако в настоящее время мой код выдает System.IO.IsolatedStorage.IsolatedStorageException и Кажется, я не могу найти проблему. Я искал ошибку, которую я получил из окна сообщения, которое было «- operation not permitted», но все решения, которые были опубликованы, похоже, не работают. Я попытался закрыть потоки, но он не работает.windows phone 7 изолированное хранилище - операция не разрешена

Любой совет будет высоко оценен.

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

        } 
      } 
     } 
    } 

До сих пор у меня есть: а) изменил FileMode б) изменил FileAccess и несколько других «быстрого исправления», что я даже не помню.

ответ

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() инструкции. Метод close автоматически вызывается, когда вы добавляете поток в оператор using.

+0

Спасибо, это работает отлично! – user2111054

Смежные вопросы