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
将文件截断到给定大小。
在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
将文件截断到给定大小。