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

时间:2015-06-05 21:06:01

标签: haskell io handle

在Haskell中,当你已经有一个打开的文件句柄并且不希望关闭它时,如何清除文件的内容? System.IO API有一些简单的方法对我来说不明显吗?

在限制较少的情况下,清除文件内容的最简单方法是使用writeFile awesomefile.txt ""。如果您已经有awesomefile.txt的打开文件句柄,那么writeFile将失败并出现异常(即“openFile:资源忙(文件被锁定)”)。

我认为使用hSeek将句柄设置回起始位置可能会产生类似的效果,但事实并非如此。在寻找回到开始的句柄之后,下一个hPutStr调用将根据需要覆盖尽可能多的字节(无论如何都更符合逻辑意义)。

在我的程序中出现这种情况,我希望经常将信息写入文件以进行日志记录。只有最新的日志数据是相关的(并且巨大的文件非常不方便),因此在每次写入之前清空文件。因为写操作非常频繁,所以我只想打开一次文件句柄。

只有相关问题:
Clear file contents in haskell language

1 个答案:

答案 0 :(得分:5)

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