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 handleEscriptura 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" contentEscriptura 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 handleManipulació 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" additionalContentGestió 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 contentExercicis Pràctics
Exercici 1: Lectura i Escriptura
- Escriu un programa que llegeixi el contingut d'un arxiu anomenat
input.txti escrigui aquest contingut en un altre arxiu anomenatoutput.txt.
Solució
import System.IO
main :: IO ()
main = do
content <- readFile "input.txt"
writeFile "output.txt" contentExercici 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.
