美文网首页Haskell
使用Haskell读写文件

使用Haskell读写文件

作者: DarkBubble | 来源:发表于2018-03-05 11:04 被阅读22次

1. 直接读写文本文件

Haskell的Prelude库提供了两个函数用来直接读写文本文件,分别是readFilewriteFile,其类型签名如下:

readFile :: FilePath -> IO String
writeFile :: FilePath -> String -> IO ()

注意,FilePath只是String的别名(String本山亦是[Char]的别名。)
这两个函数用起来比较简单,第一个参数是文件名;readFile直接返回一个IO String,即在触发IO过程中返回文件的内容;writeFile第二个参数是需要写入文件的内容字符串,返回一个IO (),即触发一个无返回值的IO过程。

2. 句柄方式

Haskell读写文件需要使用系统接口,因此放在了系统库System.IO中。使用文件的主要方式是句柄。句柄是一种操作系统资源的方式,类似于一种附带类型信息的系统ID号,记录了资源所在的内存或者设备地址,并且附带响应的操作API。在Haskell的System.IO库中,小写字母h开头的函数都与句柄操作有关系。由于操作句柄是程序外部的系统资源,因此必然都是IO函数。下面列举一个打开文件并且按照行读取内容的过程:

import System.IO
import System.Environment(getArgs)
import Control.Monad(mapM_)

hGetLines :: Handle -> IO [String]
hGetLines h = do fileOk <- hIsOpen h
                 fileEof <- hIsEOF h
                 if fileOk && not fileEof
                 then do current <- hGetLine h
                         others  <- hGetLines h
                         return $ current:others
                 else return []

main = do args <- getArgs
          if length args /= 1
          then fail "no input file"
          else return ()
          h <- openFile (args !! 0) ReadMode
          content <- hGetLines h
          mapM_ putStrLn content
          hClose h
  • IOMode,包括几个参数:ReadMode | WriteMode | AppendMode | ReadWriteMode分别对应:只读、只写、追加和读写模式。
  • 如果用户需要处理大型文本,则应当配合ByteString(Data.ByteString)库和Text(Data.Text)库。
  • 如果用户需要处理二进制,将openFile换成openBinaryFile

相关文章

  • 使用Haskell读写文件

    1. 直接读写文本文件 Haskell的Prelude库提供了两个函数用来直接读写文本文件,分别是readFile...

  • python 数据分析基础 day5-读写csv文件

    今天说一下使用python读写csv文件。读写csv文件可以使用基础python实现,或者使用csv模块、pand...

  • python 文件操作

    读写文件通常包含以下操作: 打开文件。获取文件对象 读写文件、对文件内容进行操作。 关闭文件。使用文件对象关闭文件...

  • nodeJS 文件读写

    参考文件 大文件读写使用缓冲区方式

  • 文件读写总结

    1. C++文件读写详解 1.1. 文件读写操作 使用方式 1.1.1. 打开文件 文件操作通过成员函数open(...

  • Python学习记录之:IO编程

    IO编程 文件读写 Python中文件读写语法和C兼容 读文件使用Python内置的open()函数,传入文件名和...

  • perl入门03:文件读入与输出

    要点一:文件读写 文件读写主要使用open函数,如下图使用方法分为三个部分: 1、文件句柄 可以理解呈摆渡船,读取...

  • golang 读写二进制文件(2)

    golang 使用encoding/gob包读写二进制文件 上篇介绍了使用"encoding/binary"包读写...

  • Haskell中Storable的使用

    Haskell支持指针和堆内存的分配和使用,主要使用Foreign模块里面的功能。要使用Haskell的指针类型(...

  • Python3:文件读写

    文件读写模式 使用open()函数 以任何方式使用文件之前,都必须打开文件;打开文件使用open()函数,其返回一...

网友评论

    本文标题:使用Haskell读写文件

    本文链接:https://www.haomeiwen.com/subject/shvcfftx.html