在我的單元測試,我使用下面的代碼打開一個流和寫入: 附加信息:爲什麼第二次寫入同一個文件時會拋出IsolatedStorageException異常?
IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
stream = m_store.OpenFile(filename, FileMode.Create);
...
stream.Flush();
stream.Close();
stream.Dispose();
store.Dispose()
的第一次成功,但它失敗,出現以下日誌輸出第二次:在IsolatedStorageFileStream上不允許操作。
的FileMode.Create枚舉常量的定義爲:
指定操作系統應創建一個新的文件。如果文件已經存在,它將被覆蓋。創建相當於請求如果文件不存在,請使用CreateNew;否則,使用截斷。
所以看起來這是正確的常數。
我發現在計算器如 IsolatedStorageFileStream exception is throw when file is opened?
幾個類似的問題,但他們並沒有幫助。由於在網絡上的某個地方建議(現在找不到鏈接),我嘗試刪除該文件第一,如果它存在,違背了枚舉的意見,像下面,但並沒有幫助:
if (store.FileExists(filename))
{
store.DeleteFile(filename);
}
問題:我錯過了什麼?
謝謝!
謝謝,但這不是很不幸...上面的代碼有點過分簡化了。本地變量實際上是一個類中的數據成員,我實際上是在成員函數中進行關閉操作,並且還在該函數中處理該存儲。我還添加了日誌語句,所以我確信這個函數被稱爲...我不能使用一個使用,因爲打開和寫入流是在我正在實現的類之外完成的... – swinefeaster
@swinefeaster:它是如果您發佈不同問題的代碼,很難說出真正的代碼有什麼問題。我很欣賞真正的短而完整的程序在手機應用程序中發佈有些困難,但是您可以發佈一個簡短但完整的程序節*。 –
好吧,我的壞...很抱歉浪費你的時間。我正確地關閉了輸出流,但沒有輸入流(用於讀取文件)。這是造成這個問題的原因。但無論如何,使用關鍵字的好指針! – swinefeaster