在Haskell中安全創建臨時目錄的正確方法是什麼? System.IO
提供了創建臨時文件的方法,但我找不到任何對目錄執行相同操作的任何內容,既不存在也不在System.Directory
,System.Posix.Directory
或System.Posix.Temp
中。有沒有我忽略的功能,還是我需要自己寫一個功能? (?如果是的話,有沒有危險,以避免,如存在與創建臨時文件)在Haskell中創建臨時目錄
11
A
回答
6
對於Unix系統具體工作中,Unixutils包中包含這樣的功能:
withTemporaryDirectory :: FilePath -> (FilePath -> IO a) -> IO a
如果你需要它在Windows和Unix系統上工作,你需要使用臨時包。它具有相同的功能以稍微不同的類型簽名:
withTemporaryDirectory :: FilePath -> String -> (FilePath -> IO a) -> IO a
2
你可以看Distribution.Compat.TempFile
模塊驚天動地源的例子。它定義createTempDirectory
如下(其中c_getpid
和mkPrivateDir
是平臺專用):
createTempDirectory :: FilePath -> String -> IO FilePath
createTempDirectory dir template = do
pid <- c_getpid
findTempName pid
where
findTempName x = do
let dirpath = dir </> template ++ show x
r <- try $ mkPrivateDir dirpath
case r of
Right _ -> return dirpath
Left e | isAlreadyExistsError e -> findTempName (x+1)
| otherwise -> ioError e
那驚天動地定義此功能的事實表明,有沒有做到這一點的標準方式。
+3
現在這個功能已被分解到['temporary'](http://hackage.haskell.org/package/temporary)包中。 – bgamari 2014-10-20 23:58:19
0
至於建議的@Nikita沃爾科夫,我張貼@Thomas M. DuBuisson的評論作爲一個單獨的答案:
使用temporary包。它爲使用臨時文件和目錄提供了一個便捷的獨立於平臺的API。臨時文件和目錄在使用後會自動刪除。
相關問題
- 1. 在PyTest中創建臨時目錄
- 2. org.apache.jmeter.report.dashboard.GenerationException:無法創建臨時目錄「temp」
- 3. 無法創建臨時目錄
- 4. 可以在系統的臨時目錄中創建flymake的臨時文件嗎?
- 5. 在臨時目錄
- 6. 如何在ant中創建臨時目錄?
- 7. 如何在CMake中創建臨時目錄?
- 8. 爲什麼臨時目錄不是在緩存目錄中創建的?
- 9. 如何自動創建(並刪除)Makefile中的臨時目錄?
- 10. 如何創建臨時文件`在`/ tmp`,沒有工作目錄
- 11. Ofstream在Windows臨時目錄下創建一個文件
- 12. 如何創建一個臨時目錄,並在Python
- 13. 在服務器上創建臨時目錄
- 14. 流浪者創建臨時目錄和文件時,包裝盒
- 15. 臨時目錄10
- 16. 在創建文件時創建目錄
- 17. 在shell腳本中臨時目錄中的臨時操作
- 18. 在SQL中實時創建臨時表
- 19. 在Swift中訪問臨時目錄
- 20. 在TeamCity中禁用MSTest臨時目錄
- 21. org.openqa.selenium.WebDriverException:無法創建臨時目錄:/ sd card/1339054625829。
- 22. 多處理python-server創建太多臨時目錄
- 23. 什麼是安全創建臨時目錄的POSIX函數?
- 24. docker-compose內部錯誤:無法創建臨時目錄
- 25. 阿帕奇星火無法創建臨時目錄
- 26. Lucene 4.9:使用文檔創建臨時目錄
- 27. 創建具有後綴的臨時目錄
- 28. iOS:什麼是創建臨時目錄的安全方式?
- 29. 在maven中需要時創建目錄
- 30. 創建臨時表
這將返回將創建新臨時文件的目錄(即通常爲「/ tmp」)。它實際上並不創建臨時目錄。 – 2010-06-04 23:30:25
@Travis ACK! withTemporaryDirectory就是我一直在尋找的東西。 – 2010-06-05 00:05:54
這很適合我使用的用法,因爲它在我完成後自動清理目錄。 – 2010-06-05 00:39:49