Haskell:
Tekstitiedoston lukeminen

How to:

import System.IO

-- Tiedoston lukeminen rivillesi
main = do
    fileHandle <- openFile "esimerkki.txt" ReadMode
    contents <- hGetContents fileHandle
    putStr contents
    hClose fileHandle

-- Toisaalta, käytämme 'readFile' funktiota (helppo tapa):
mainLueHelppo = do
    contents <- readFile "esimerkki.txt"
    putStr contents

-- Yksinkertainen tapa luetella tiedoston rivit:
mainRivit = do
    contents <- readFile "esimerkki.txt"
    let rivit = lines contents
    mapM_ putStrLn rivit

Odotettu tuloste:

Moi, tämä on tiedosto esimerkki.
Tässä on toinen rivi.

Deep Dive

Tekstitiedostojen käsittely on oleellista monille sovelluksille. Historiassa tiedostonkäsittelyyn käytettiin alhaisen tason IO-operaatioita C:ssä. Haskellissa se yksinkertaistui funktioiden, kuten readFile ja hGetContents, myötä.

Vaihtoehtoisesti voit käyttää ByteString tai Text kirjastoa, jotka käsittävät suuren datamäärän tehokkaammin kuin perinteiset String:it.

Kun avaat tiedoston, muista aina sulkea se. Tämä vapauttaa resurssit. withFile funktio hoitaa tämän automaattisesti.

See Also