En aquest tema, aprendrem com treballar amb fitxers en F#. La manipulació de fitxers és una habilitat essencial per a moltes aplicacions, ja que permet llegir dades d'arxius, escriure resultats a fitxers i processar informació emmagatzemada en el sistema de fitxers.

Continguts

Introducció a l'Entrada/Sortida de Fitxers

L'entrada/sortida de fitxers (E/S) en F# es realitza principalment a través de les biblioteques .NET. Aquestes biblioteques proporcionen una sèrie de classes i mètodes per treballar amb fitxers de manera eficient i segura.

Llegir Fitxers

Llegir un Fitxer de Text

Per llegir un fitxer de text en F#, podem utilitzar la classe System.IO.File. Aquí teniu un exemple de com llegir tot el contingut d'un fitxer de text:

open System.IO

let llegirFitxer (path: string) =
    try
        let contingut = File.ReadAllText(path)
        printfn "Contingut del fitxer:\n%s" contingut
    with
    | :? FileNotFoundException -> printfn "El fitxer no s'ha trobat."
    | :? UnauthorizedAccessException -> printfn "No tens permís per llegir aquest fitxer."

// Exemple d'ús
llegirFitxer "exemple.txt"

Llegir un Fitxer Línia per Línia

Si necessitem processar un fitxer línia per línia, podem utilitzar el mètode File.ReadLines:

let llegirFitxerLiniaPerLinia (path: string) =
    try
        let linies = File.ReadLines(path)
        for linia in linies do
            printfn "%s" linia
    with
    | :? FileNotFoundException -> printfn "El fitxer no s'ha trobat."
    | :? UnauthorizedAccessException -> printfn "No tens permís per llegir aquest fitxer."

// Exemple d'ús
llegirFitxerLiniaPerLinia "exemple.txt"

Escriure Fitxers

Escriure Text a un Fitxer

Per escriure text a un fitxer, podem utilitzar el mètode File.WriteAllText:

let escriureFitxer (path: string) (contingut: string) =
    try
        File.WriteAllText(path, contingut)
        printfn "El fitxer s'ha escrit correctament."
    with
    | :? UnauthorizedAccessException -> printfn "No tens permís per escriure aquest fitxer."

// Exemple d'ús
escriureFitxer "exemple.txt" "Hola, món!"

Afegir Text a un Fitxer

Si volem afegir text a un fitxer existent, podem utilitzar el mètode File.AppendAllText:

let afegirTextAFitxer (path: string) (contingut: string) =
    try
        File.AppendAllText(path, contingut)
        printfn "El text s'ha afegit correctament."
    with
    | :? UnauthorizedAccessException -> printfn "No tens permís per escriure aquest fitxer."

// Exemple d'ús
afegirTextAFitxer "exemple.txt" "\nAquesta és una nova línia."

Manipulació de Fitxers

Copiar, Moure i Esborrar Fitxers

A més de llegir i escriure fitxers, també podem copiar, moure i esborrar fitxers utilitzant els mètodes File.Copy, File.Move i File.Delete respectivament.

let copiarFitxer (sourcePath: string) (destPath: string) =
    try
        File.Copy(sourcePath, destPath, true)
        printfn "El fitxer s'ha copiat correctament."
    with
    | :? FileNotFoundException -> printfn "El fitxer d'origen no s'ha trobat."
    | :? UnauthorizedAccessException -> printfn "No tens permís per copiar aquest fitxer."

let moureFitxer (sourcePath: string) (destPath: string) =
    try
        File.Move(sourcePath, destPath)
        printfn "El fitxer s'ha mogut correctament."
    with
    | :? FileNotFoundException -> printfn "El fitxer d'origen no s'ha trobat."
    | :? UnauthorizedAccessException -> printfn "No tens permís per moure aquest fitxer."

let esborrarFitxer (path: string) =
    try
        File.Delete(path)
        printfn "El fitxer s'ha esborrat correctament."
    with
    | :? FileNotFoundException -> printfn "El fitxer no s'ha trobat."
    | :? UnauthorizedAccessException -> printfn "No tens permís per esborrar aquest fitxer."

// Exemple d'ús
copiarFitxer "exemple.txt" "copia_exemple.txt"
moureFitxer "copia_exemple.txt" "nou_exemple.txt"
esborrarFitxer "nou_exemple.txt"

Exercicis Pràctics

Exercici 1: Llegir i Comptar Línies

Escriu una funció que llegeixi un fitxer de text i compti el nombre de línies que conté.

let comptarLinies (path: string) =
    try
        let linies = File.ReadLines(path)
        let numLinies = Seq.length linies
        printfn "El fitxer conté %d línies." numLinies
    with
    | :? FileNotFoundException -> printfn "El fitxer no s'ha trobat."
    | :? UnauthorizedAccessException -> printfn "No tens permís per llegir aquest fitxer."

// Exemple d'ús
comptarLinies "exemple.txt"

Exercici 2: Escriure un Fitxer amb Números

Escriu una funció que escrigui els números de l'1 al 100 en un fitxer, amb cada número en una línia separada.

let escriureNumeros (path: string) =
    try
        let contingut = String.concat "\n" [for i in 1..100 -> i.ToString()]
        File.WriteAllText(path, contingut)
        printfn "Els números s'han escrit correctament."
    with
    | :? UnauthorizedAccessException -> printfn "No tens permís per escriure aquest fitxer."

// Exemple d'ús
escriureNumeros "numeros.txt"

Conclusió

En aquesta secció, hem après com treballar amb fitxers en F#. Hem vist com llegir i escriure fitxers, així com com manipular-los (copiar, moure i esborrar). A més, hem practicat aquests conceptes amb alguns exercicis pràctics. Amb aquestes habilitats, estàs preparat per gestionar fitxers en les teves aplicacions F#.

© Copyright 2024. Tots els drets reservats