haskell中的io模块主要是用于读写文件屏幕的,通过import IO来导入

其中有如下常用定义

data IOMode = ReadMode | WriteMode | AppendMode | ReadWriteMode
openFile :: FilePath -> IOMode -> IO Handle
hClose   :: Handle -> IO ()
hIsEOF   :: Handle -> IO Bool
hGetChar :: Handle -> IO Char
hGetLine  :: Handle -> IO String
hGetContents :: Handle -> IO String
getChar :: IO Char
getLine :: IO String
getContents :: IO String
hPutChar :: Handle -> Char -> IO ()
hPutStr :: Handle -> String -> IO ()
hPutStrLn :: Handle -> String -> IO ()
putChar :: Char -> IO ()
putStr :: String -> IO ()
putStrLn :: String -> IO ()
readFile :: FilePath -> IO String
writeFile :: FilePath -> String -> IO ()
bracket  :: IO a-> (a -> IO b) -> (a -> IO c) -> IO c

其中readFile和writeFile是不需要事先打开文件就能读写整个文件的。bracket是用来安全读写文件的,在对外部操作中很可能遇到异常,这时候就需要bracket来保证异常发生时,文件能被正确关闭。bracket的第一个参数一般是一开始做的事情,第二个是最后做的事情,第三个是中间做的事情。在读写文件中,一般性是打开文件 关闭文件 读写文件这么三个选项