鸿 网 互 联 www.68idc.cn

当前位置 : 主页 > 编程语言开发 > 技术问答 > >

Haskell语言学习笔记(19)File IO

来源:互联网 作者:佚名 时间:2018-02-02 18:59
关于IO Action 类型为IO t。 运算时不执行,因而没有任何效果,只有执行时才会有效果,产生副作用。 一个IO Action只有在其他IO Action中才能被执行。 类型为IO t的IO Action被执行后的结果类型为t。 File IO 函数 openFile hClose 打开和关闭文件 readMode,

关于IO Action

  • 类型为IO t。
  • 运算时不执行,因而没有任何效果,只有执行时才会有效果,产生副作用。
  • 一个IO Action只有在其他IO Action中才能被执行。
  • 类型为IO t的IO Action被执行后的结果类型为t。

File IO 函数

  • openFile hClose 打开和关闭文件
    readMode, writeMode, readwriteMode, appendMode
  • hTell hSeek 文件当前读取位置
    AbsoluteSeek, RelativeSeek, SeekFromEnd
  • withFile 用回调函数读取文件
  • readFile writeFile 直接读取写入文件
import System.IO

inputPath = "input.txt"
openFile1 = do
    handle <- openFile inputPath ReadMode
    contents <- hGetContents handle
    putStr contents
    hClose handle
withFile1 = do
    withFile inputPath ReadMode (\handle -> do
        contents <- hGetContents handle
        putStr contents)
readFile1 = do
    contents <- readFile inputPath
    putStr contents

以上代码使用三种不同的方法从文件中读取内容并打印到屏幕上。

UTF-8文件的读写

readWriteUTF8File = do
    inputHandle <- openFile inputPath ReadMode 
    hSetEncoding inputHandle utf8
    theInput <- hGetContents inputHandle
    outputHandle <- openFile outputPath WriteMode
    hSetEncoding outputHandle utf8
    hPutStr outputHandle $ map toUpper theInput
    hClose inputHandle
    hClose outputHandle

UTF-8文件的读写(2)

安装 extra 模块。

$ cabal install extra
Installed extra-1.6
import Extra
readWriteUTF8File' = do
    theInput <- readFileEncoding inputPath utf8
    writeFileEncoding utf8 outputPath $ upper theInput
网友评论
<