2013-08-16 1 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(); 

        } 
      } 
     } 
    } 

지금까지 내가 가진 : A)) 파일 모드의 B를 변경 한 FileAccess와 I도 기억하지 못하는 몇 가지 다른 "quickfixes"를 변경했습니다.

답변

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 메서드가 자동으로 호출됩니다.

+0

고맙습니다. 완벽하게 작동합니다. – user2111054

관련 문제