2013-02-12 46 views
0

基本上我正在編寫在IsolatedStorage中創建一個新文件的代碼,我確信我正確關閉了這些流,但必須有某些東西丟失,您能否看看在此以確保我不會錯過某些明顯的東西?IsolatedStorageFileStream投擲「IsolatedStorageExeption was unhandled」

這是我保存功能,它是在錯誤被拋出,被稱爲在比賽結束時,一旦用戶輸入他/她的名字:

public void SaveHighScores(string NewName, int NewScore) 
{ 
    SortHighScores(NewName, NewScore); 

    IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication(); 
    try 
    { 
     using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("HighScores.txt", FileMode.CreateNew, isoStore)) 
     { 
      using (StreamWriter writer = new StreamWriter(isoStream)) 
      { 
       for (int i = 0; i < 5; i++) 
       { 
        writer.WriteLine(MyScores[i].Name); 
        writer.WriteLine(MyScores[i].Score); 
       } 
       writer.Close(); 
      } 
      isoStream.Close(); 
     } 
    } 
    catch (IsolatedStorageException e) 
    { 
     throw e; // "IsolatedStorageException was unhandled" error now occurs here 
    } 
} 

這裏是我的讀取功能,它被稱爲在初始化過程中一次在遊戲開始時:

public void ReadHighScores() 
{ 
    IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication(); 

    if (isoStore.FileExists("HighScores.txt")) 
    { 
     try 
     { 
      using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("HighScores.txt", FileMode.Open, isoStore)) 
      { 
       using (StreamReader reader = new StreamReader(isoStream)) 
       { 
        int i = 0; 
        while (!reader.EndOfStream) 
        { 
         MyScores[i].Name = reader.ReadLine(); 
         string scoreString = reader.ReadLine(); 
         MyScores[i].Score = Convert.ToInt32(scoreString); 
         i++; 
        } 
        reader.Close(); 
       } 
       isoStream.Close(); 
      } 
     } 
     catch (IsolatedStorageException e) 
     { 
      throw e; 
     } 
    } 
    else 
    { 
     if (!failedRead) 
     { 
      failedRead = true; 
      ReadHighScores(); 
     } 
    } 
} 

任何人都可以對此有所瞭解嗎?

[編輯]

好了,所以由於某種原因,現在這個工作我第一次調用保存在一個新的遊戲功能安裝應用程序的,但下一次我玩或當我重新啓動遊戲和娛樂當它試圖保存時,它又崩潰了,這很奇怪,是FileMode.CreateNew,可能是我錯了?

[編輯]

是啊,FileMode.CreateNew拋出exeption當一個文件已經存在,所以我說isoStore.DeleteFile("HighScores.txt")之前,我創建新的文件,現在就像一個夢:)

[解決]

+0

你有沒有嘗試過嘗試抓住它?它是否在運行時或編譯時拋出錯誤? – 2013-02-12 18:27:47

+0

運行時間,我會盡快嘗試添加一個嘗試趕上 – TotalJargon 2013-02-12 18:30:22

+0

剛剛更新我的帖子,錯誤現在發生在我拋出異常時 – TotalJargon 2013-02-12 19:40:38

回答

1

FileMode.CreateNew當文件已經存在時會拋出異常,所以您必須在創建新文件之前調用isoStore.DeleteFile(string FileName),或者如果您不一定需要使用FileMode.CreateNew,請使用FileMode.Create而不是

+0

改爲使用FileMode.Create。 – 2013-02-12 21:17:34