【问题标题】:Haskell: Clear file contents using an open handleHaskell:使用打开的句柄清除文件内容
【发布时间】:2015-06-05 21:06:00
【问题描述】:

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

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

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

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

仅相关问题:
Clear file contents in haskell language

【问题讨论】:

    标签: haskell io handle


    【解决方案1】:

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

    【讨论】:

    • 这是我希望的解决方案。值得注意的是“频繁写入日志文件”的情况,如果n 很小但不为零,hSetFileSize hdl n 似乎更快
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多