我需要將文件複製到tmp位置才能操作它。我需要確保我總是可以複製文件。將文件複製到tmp文件夾的建議方法是什麼?
- 以下代碼是否正確?
- 確保不會嘗試複製到已存在的位置嗎?
- 有沒有失敗的機會? (我應該捕獲任何異常)
,我現在用的就是下面的代碼:
string tmpFile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
在此先感謝。
我需要將文件複製到tmp位置才能操作它。我需要確保我總是可以複製文件。將文件複製到tmp文件夾的建議方法是什麼?
,我現在用的就是下面的代碼:
string tmpFile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
在此先感謝。
也許用Path.GetTempFileName
代替?
string tmpFile = Path.GetTempFileName();
該方法可能會拋出IOException
,因此您應該在某個時候捕獲該方法。究竟在哪裏取決於這個代碼存在的上下文。
請注意,此方法也會在磁盤上創建文件,因此不會有其他進程在此調用與代碼寫入文件之間創建相同名稱的文件的風險。
出了什麼問題:
string tmpFile = Path.GetTempFileName();
從MSDN上Path.GetTempFileName():
在磁盤上創建一個唯一命名的,零字節臨時文件並返回 該文件的完整路徑。該文件具有.TMP擴展名。
它並確保你沒有得到一個已經存在,並就您的瞭解故障場景的問題一個文件,如果它不能創建一個這樣的文件:
的GetTempFileName方法將引發IOException如果它用於 創建超過65535個文件而不刪除以前的臨時文件 。
如果沒有唯一的臨時文件名可用,則GetTempFileName方法將引發IOException。要解決此錯誤,請刪除 所有不需要的臨時文件。
路徑。GetTempFileName()我認爲這就是你需要的全部 – jjchiw
你可能想要改寫你的問題,因爲沒有在你的代碼中有一個複製操作,你只是想知道如何獲取一個唯一的命名臨時文件的文件名。 GetTempFileName是你需要的。 – Ernesto
至於限制,有幾點:如果GetTempFileName方法用於創建超過65535個文件而不刪除以前的臨時文件,GetTempFileName方法將引發IOException。 如果沒有唯一的臨時文件名可用,則GetTempFileName方法將引發IOException。要解決此錯誤,請刪除所有不需要的臨時文件。 – Ernesto