Haskell: 使用打开句柄清除文件内容

Haskell: Clear file contents using an open handle

在Haskell中,当您已经有一个打开的文件句柄并且不想关闭它时,如何清除文件的内容? System.IO API?

中是否有一些对我来说不明显的简单方法

在限制较少的情况下,清除文件内容的最简单方法是使用 writeFile awesomefile.txt ""。但是,如果您已经有一个 awesomefile.txt 的打开文件句柄,那么 writeFile 将失败并出现异常(即 "openFile: resource busy (file is locked)")。

我想也许使用 hSeek 将手柄设置回起始位置可能会产生类似的效果,但事实并非如此。在寻找句柄回到开头后,下一个 hPutStr 调用将只覆盖必要的字节数(无论如何这更合乎逻辑)。

我的程序中出现了这种情况,我想非常频繁地将信息写入文件以用于日志记录。只有最近的日志数据是相关的(巨大的文件很不方便),所以每次写入前都会清空文件。因为写入如此频繁,我只想打开文件句柄一次。

唯一相关问题:
Clear file contents in haskell language

您可以使用 hSetFileSize 将文件截断到给定大小。