我有以下問題:我有一些(二進制)文件,它們嵌入資源中。由於某些原因,我必須將這些文件暫時寫在磁盤上。我應該如何繼續?也許這可以使用GetRandomFilename()或GetTempFileName()?在C#中的磁盤上臨時寫入文件
回答
GetTempFileName()
是在這種情況下使用的邏輯。
正如leppie所說,確保在完成後刪除文件以避免任何問題。 GetTempFileName()
如果用於創建超過65535個文件而不刪除以前的臨時文件,則會引發IOException。
您也可以創建一個Guid
並從中創建一個文件名。保證獨特和快速。
GetTempFile完全慢,因爲它必須掃描免費的文件名。它只是創建一個前綴並添加一個數字。如果該名稱的文件已存在,則跳過該名稱。如果您的臨時文件夾已滿,此檢查需要時間。
也不可能指定應在哪個文件夾創建臨時文件。 GetTempFile總是在Windows分區上創建臨時文件。如果您創建大型臨時文件,則需要指定它們應存儲的位置。
這看起來像是一些不必要的額外步驟,但是如果您發現自己在GetTempFileName()的限制之外工作,即如果您需要超過65,535個文件,則會很有用。 – 2010-10-20 11:48:24
也完全無視窗口說你應該這樣做的方式。 -1。 – TomTom 2010-10-20 12:04:04
- 1. 不寫入磁盤的C++文件
- 2. 將System.Xml.XmlElement寫入磁盤上的文件
- 3. 文件寫入磁盤
- 4. 在磁盤上寫上傳的文件
- 5. Python何時將文件寫入磁盤?
- 6. 在寫入文件時減少磁盤訪問次數C
- 7. 如何分配磁盤中的文件來寫入數據C++
- 8. 什麼時候文件實際上被寫入磁盤?
- 9. 在Linux上將文件寫入磁盤的最快方法
- 10. WordPress無法將文件寫入磁盤
- 11. 強制將文件寫入磁盤
- 12. 寫入磁盤文件不正確
- 13. 寫入磁盤的文件在一段時間後被刪除
- 14. 將文本或HTML寫入磁盤上的文件
- 15. 如何在磁盤上寫入FileContentResult?
- 16. NSUserDefaults寫入磁盤?
- 17. svn導入錯誤:無法將svndiff寫入臨時文件:磁盤上沒有足夠的空間
- 18. 使用節點將文件上傳到流而不先寫入臨時文件磁盤?
- 19. 在Tomcat中寫入臨時文件
- 20. 爲什麼內存沒有在C#在磁盤上寫入文件後釋放
- 21. 在Java播放時將mp3文件寫入磁盤
- 22. 寫入磁盤上的每個LBA
- 23. mmap寫入磁盤上的文件(同步/異步)
- 24. 使用MailKit將消息寫入磁盤上的文件夾
- 25. 是否將MultipartRequest中的Java File對象作爲臨時文件寫入磁盤或存儲在內存中?
- 26. C#讀取/寫入物理磁盤
- 27. C++ ofstream指針無法寫入磁盤
- 28. 寫入文件描述符3而不寫入磁盤?
- 29. 在Django中從磁盤「上傳」文件
- 30. 在clojure中寫入大文件到磁盤
這兩個應該工作。只記得事後清理,沒有人喜歡髒的TEMP目錄。 – leppie 2010-10-20 11:42:25
是的,一個同事犯了一個錯誤,認爲Windows知道臨時文件可以被刪除,並且會定期清理它們。最終我們達到了最高限度,並且軟件崩潰了。 – StriplingWarrior 2010-10-20 16:07:55