【发布时间】:2015-06-05 21:06:00
【问题描述】:
在 Haskell 中,当您已经有一个打开的文件句柄并且不想关闭它时,如何清除文件的内容?是否有一些从 System.IO API 对我来说不明显的简单方法?
在限制较少的情况下,清除文件内容的最简单方法是使用writeFile awesomefile.txt ""。如果你已经有一个awesomefile.txt 的打开文件句柄,那么writeFile 将失败并出现异常(即“openFile: resource busy (file is locked)”)。
我想也许使用hSeek 将手柄设置回起始位置可能会产生类似的效果,但事实并非如此。在寻找句柄回到开头之后,下一个 hPutStr 调用将覆盖尽可能多的字节(无论如何这更符合逻辑)。
在我的程序中出现这种情况,我想非常频繁地将信息写入文件以进行日志记录。只有最近的日志数据是相关的(而且巨大的文件非常不方便),因此在每次写入之前都会清空文件。因为写入如此频繁,我只想打开文件句柄一次。
【问题讨论】: