Haskellでファイルを読み書きする方法【Haskell入門】

ファイル読み込み

ReadModeによるファイル読み込み

Haskellにおいてのファイル読み込みはopenFile関数を使用します。 子の関数を使用するためには、System.IOを事前にimportしておく必要があります。

以下のサンプルコードでは、input.txtファイルを読み取り専用で開き、inpStr変数に格納しています。

import System.IO
import Data.Char(toUpper)

main :: IO ()
main = do 
    inh <- openFile "input.txt" ReadMode
    inpStr <- hGetLine inh
    print(inpStr)
    hClose inh

WriteModeによるファイル書き込み

Haskellにおける基本的なファイルの書き込みは読み込み同様openFile関数を使用します。 ただし、WriteModeでファイルオープンしなければ書き込めないことに注意してください。

import System.IO
import Data.Char(toUpper)

main :: IO ()
main = do 
    outh <- openFile "output.txt" WriteMode
    hPutStrLn outh "input string"
    hClose outh

より簡単なreadFilewriteFile

readFileによるファイル読み込み

openFilehGetLineを組み合わせた関数がreadFile関数である。 ファイルハンドラーをオープンする必要がなく、シンプルな関数となっている。

import System.IO

main = do
  contents <- readFile "input.txt"
  putStrLn contents

writeFileによるファイル書き込み

これも、ファイルハンドラーをオープンせずにファイルを書き込むための関数である。

import System.IO

main = do
  contents = "this is test"
  writeFile "output.txt" contents