我正在尝试读取文件的内容,将文本转换为大写,然后将其写回。在Haskell中读取和写入文件
这里是我写的代码:
import System.IO
import Data.Char
main = do
handle <- openFile "file.txt" ReadWriteMode
contents <- hGetContents handle
hClose handle
writeFile "file.txt" (map toUpper contents)
return()
然而,这没有什么写入文件,事实上,它甚至将其清除。
我做了一些改变:
main = do
handle <- openFile "file.txt" ReadWriteMode
contents <- hGetContents handle
writeFile "file.txt" (map toUpper contents)
hClose handle
return()
但是,我得到的错误resource busy (file is locked)
。我怎样才能得到这个工作,并且为什么它在两种情况下都不起作用?
你已经正确地指出了这个问题,但您的解决方案是不必要的复杂。 – leftaroundabout
@leftaroundabout bheklilr的方法是什么,你会推荐? – bwroga
是的,'readFile'是我推荐的,除非有理由不(性能等),或者你已经在项目中使用'conduit'或'pipes'。 – leftaroundabout