gpt4 book ai didi

haskell - 仅当文件不存在时如何创建文件

转载 作者:行者123 更新时间:2023-12-04 18:11:05 25 4
gpt4 key购买 nike

在 C 语言中,我可以调用 openO_CREATO_EXCL当且仅当当前没有该名称的文件时才创建一个新文件。我无法在 Haskell 中找到一种方法来做到这一点。我更喜欢提供 Handle 的友好的东西,理想情况下为我完成了所有棘手的异常处理。 (我不一定期望它会为我正确完成,但那是另一回事。)

最佳答案

我认为这在 base 中不直接可用, 但您可以使用 openFd 来自 unix 包,设置exclusive OpenFileFlags 中的标志记录到True .概括:

openFd
path
WriteOnly
(Just defaultMode)
defaultFileFlags { exclusive = True }
其结果可以转换为普通的 Haskell I/O Handle使用 fdToHandle .如果失败,它应该抛出 IOError异常(exception),(我认为)您可以使用 isAlreadyExistsError 进行测试.
在 Windows 上,这可以通过 createFile 来完成。来自 Win32 包裹。
createFile
path
gENERIC_WRITE
fILE_SHARE_NONE
Nothing
cREATE_NEW
fILE_ATTRIBUTE_NORMAL
Nothing
然后您可以使用 hANDLEToHandle 获得定期 Handle .我不确定这里的错误处理是如何工作的;您可能需要查看 HANDLE反对 nullPtr并调用 getLastError获取错误信息。

关于haskell - 仅当文件不存在时如何创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70105225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com