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

Ein*_*Ein 2 io haskell handle

在Haskell中,当你已经有一个打开的文件句柄并且不想关闭它时,如何清除文件的内容?是否有一些简单的方法从System.IO API不明显?

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

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

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

只有相关问题:
用haskell语言清除文件内容

Dan*_*ner 5

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