我正在尝试逐行读取文件,但是当我到达EOF时我不知道如何停止.
我有这个代码:
readWholeFile = do inputFile <- openFile "example.txt" ReadMode
readALine inputFile
readALine x = do y <- hGetLine x
print y
readALine x
Run Code Online (Sandbox Code Playgroud)
它显然总是终止提出异常.
我怎么解决?
编辑:确切的错误消息是:
*** Exception: example.txt: hGetLine: end of file
Run Code Online (Sandbox Code Playgroud)
Fed*_*lev 16
还有一个解决方案 你可以懒惰读取文件readFile,懒惰按需分割并逐行获取结果:
readLines :: FilePath -> IO [String]
readLines = fmap lines . readFile
Run Code Online (Sandbox Code Playgroud)