在阅读了解你的Haskell 时,我发现你可以使用 ReadWriteMode 作为openFile
的第三个参数。
但这是否应该处理文件的写入和读取? 我做了一些测试:
import System.IO
main = do
handle <- openFile "myfile" ReadWriteMode
contents <- hGetContents handle
putStrLn contents
hPutStr handle "Something"
hClose handle
然而,这返回了一个错误:
*** Exception: myfile: hPutStr: illegal operation (handle is closed)
那么, ReadWriteMode 有什么意义呢?我正在寻找可以使用它的任何现实世界的案例。
答案 0 :(得分:0)
这似乎有用。
import System.IO
import qualified System.IO.Strict as SIO
import GHC.IO.Handle
slurp h = do
h' <- hDuplicate h
hSeek h' AbsoluteSeek 0
SIO.hGetContents h'
main = do
handle <- openFile "myfile" ReadWriteMode
contents <- slurp handle
putStrLn contents
offset <- hTell handle
putStrLn $ "handle position: " ++ show offset
hPutStrLn handle "Something new"
hClose handle
System.IO.Strict
来自strict
package
修改:您甚至可能不需要使用SIO.hGetContents
- 只是普通hGetContents
似乎也有用。