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.
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.
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
- Escriu un programa que llegeixi el contingut d'un arxiu anomenat
input.txt
i escrigui aquest contingut en un altre arxiu anomenatoutput.txt
.
Solució
import System.IO main :: IO () main = do content <- readFile "input.txt" writeFile "output.txt" content
Exercici 2: Afegir Data i Hora
- 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.