2013-01-16 59 views
4

我正在開發一個使用C#3.5的WinForms應用程序。我有一個臨時保存文件的要求。我們只是說,出於參數的原因,這是用戶在查看應用程序上的特定選項卡時的很短時間。用戶導航離開標籤後,我可以自由刪除此文件。每次用戶導航到選項卡時(通常只執行一次),該文件將被創建(使用GUID名稱)。將文件保存在臨時目錄中是否被認爲是良好的/可接受的做法?

要到我的問題 - 它是好的做法,將文件保存到臨時目錄?我將使用以下邏輯:

Path.GetTempFileName(); 

我的意圖是創建文件並保留它而不刪除它。我將在此假設Windows操作系統根據剩餘可用空間的百分比以某個間隔清理臨時目錄。

注:我已經使用IsolatedStorage選項來創建該文件,手動刪除該文件時,我當用戶從導航選項卡遠離使用它即結束了考慮。但是,這並不是很好,因爲我需要獲取文件的絕對路徑或相對路徑,並且在與IsolatedStorage進行交互時,這似乎不是一個簡單/安全的工作。我的意見是,它只是沒有設計允許 這個。

+2

其優良的,只要你不將這些文件 – Dhawalk

+3

留下任何機密數據(1)你絕對應該作出努力,清理文件,當你用它做。如果文件在應用程序崩潰或被強行中止時退出是可以接受的,但在正常情況下,文件應該儘可能自行消失。(2)如果在世界可寫的目錄(通常是臨時目錄)中創建文件,請查看安全臨時文件創建的標準實踐並遵循它們。 – Celada

+0

@Celada溫度真的是世界可寫嗎? AFAIK每個用戶都有自己的臨時目錄,如果其他用戶可以在那裏寫,我會感到驚訝。 – CodesInChaos

回答

3

我經常寫入臨時文件。在我的謙虛opionion中,關鍵是通過刪除不需要的臨時文件來清理一個自己。

+0

在使用時是否可以停止/阻止/拒絕「其他」潛在應用程序(或操作系統刪除文件)?在創建它之後立即刪除它,但在它被我的應用程序讀取之前它不會被刪除! – fin

1

在臨時目錄中創建臨時文件很好。清理臨時文件被認爲是一種很好的做法。

請記住,臨時文件不應該堅持,你需要在一個長期的基礎上的任何數據(定義爲整個用戶會話)。 「長期」需要的數據的實例是用戶設置或保存的數據文件。

0

繼續並保存在那裏,但完成後清理(關閉程序)。保持它們直到最後也允許重新使用。

1

在我看來,這是一個更好的做法,實際刪除臨時文件,當你不需要他們。從Path.GetTempFileName() Method考慮下面的言論:

的GetTempFileName方法將引發一個IOException如果它是用來 而不刪除以前的臨時 文件創造超過65535個文件。如果沒有 唯一的臨時文件名可以

的GetTempFileName方法將引發一個IOException。要解決此錯誤,請刪除 所有不需要的臨時文件。

另外,對於Windows 7和Windows Server 2008 R2,您應該注意以下hotfix

相關問題