En aquest tema, aprendrem com gestionar arxius en Haskell. La gestió d'arxius és una part essencial de moltes aplicacions, ja que permet llegir i escriure dades persistents. Haskell proporciona una biblioteca estàndard per treballar amb arxius de manera eficient i segura.

Continguts

Introducció a la Gestió d'Arxius

Haskell utilitza el mòdul System.IO per a la gestió d'arxius. Aquest mòdul proporciona funcions per obrir, llegir, escriure i tancar arxius. A continuació, veurem com utilitzar aquestes funcions bàsiques.

import System.IO

Lectura d'Arxius

Lectura Simple

Per llegir el contingut d'un arxiu, podem utilitzar la funció readFile, que llegeix tot el contingut de l'arxiu com una cadena de text.

import System.IO

main :: IO ()
main = do
    content <- readFile "example.txt"
    putStrLn content

Lectura Línia per Línia

Si necessitem llegir un arxiu línia per línia, podem utilitzar la funció hGetLine juntament amb openFile i hClose.

import System.IO

main :: IO ()
main = do
    handle <- openFile "example.txt" ReadMode
    contents <- hGetContents handle
    putStr contents
    hClose handle

Escriptura d'Arxius

Escriptura Simple

Per escriure en un arxiu, podem utilitzar la funció writeFile, que sobreescriu el contingut de l'arxiu amb la cadena de text proporcionada.

import System.IO

main :: IO ()
main = do
    let content = "Això és un text d'exemple."
    writeFile "example.txt" content

Escriptura Línia per Línia

Per escriure línia per línia, podem utilitzar la funció hPutStrLn juntament amb openFile i hClose.

import System.IO

main :: IO ()
main = do
    handle <- openFile "example.txt" WriteMode
    hPutStrLn handle "Això és una línia d'exemple."
    hClose handle

Manipulació d'Arxius

Afegir Contingut a un Arxiu

Per afegir contingut a un arxiu existent sense sobreescriure'l, podem utilitzar la funció appendFile.

import System.IO

main :: IO ()
main = do
    let additionalContent = "Això és una línia afegida."
    appendFile "example.txt" additionalContent

Gestió d'Errors

És important gestionar els errors que poden ocórrer durant la lectura o escriptura d'arxius. Podem utilitzar la funció catch del mòdul Control.Exception per capturar i gestionar excepcions.

import System.IO
import Control.Exception

main :: IO ()
main = do
    result <- try (readFile "example.txt") :: IO (Either IOException String)
    case result of
        Left ex  -> putStrLn $ "Error llegint l'arxiu: " ++ show ex
        Right content -> putStrLn content

Exercicis Pràctics

Exercici 1: Lectura i Escriptura

  1. Escriu un programa que llegeixi el contingut d'un arxiu anomenat input.txt i escrigui aquest contingut en un altre arxiu anomenat output.txt.

Solució

import System.IO

main :: IO ()
main = do
    content <- readFile "input.txt"
    writeFile "output.txt" content

Exercici 2: Afegir Data i Hora

  1. Escriu un programa que afegeixi la data i hora actuals al final d'un arxiu anomenat log.txt.

Solució

import System.IO
import Data.Time

main :: IO ()
main = do
    currentTime <- getCurrentTime
    appendFile "log.txt" (show currentTime ++ "\n")

Conclusió

En aquesta secció, hem après com gestionar arxius en Haskell, incloent la lectura, escriptura i manipulació d'arxius. També hem vist com gestionar errors durant aquestes operacions. La gestió d'arxius és una habilitat fonamental per a qualsevol programador, i Haskell proporciona eines potents i flexibles per treballar amb arxius de manera eficient.

En el següent tema, explorarem com interactuar amb el sistema operatiu des de Haskell.

© Copyright 2024. Tots els drets reservats