我正在尝试逐行读取文件,但是当我到达EOF时我不知道如何停止。
我有这段代码:
readWholeFile = do inputFile <- openFile "example.txt" ReadMode
readALine inputFile
readALine x = do y <- hGetLine x
print y
readALine x
它显然总是终止提出异常。
我该如何解决?
编辑:确切的错误消息是:
*** Exception: example.txt: hGetLine: end of file
答案 0 :(得分:15)
还有一个解决方案。您可以使用readFile
延迟读取文件,根据需要对其进行惰性拆分并逐行获取结果:
readLines :: FilePath -> IO [String]
readLines = fmap lines . readFile
答案 1 :(得分:7)
您正在寻找的是,hIsEOF
答案 2 :(得分:7)
答案 3 :(得分:4)
在进一步阅读之前,您可以使用hIsEOF
测试手柄x。当读取行的第一个字符