我正在嘗試讀取文件的內容,將文本轉換爲大寫,然後將其寫回。在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