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#.
Curs de Programació en F#
Mòdul 1: Introducció a F#
Mòdul 2: Conceptes Bàsics
- Tipus de Dades i Variables
- Funcions i Immutabilitat
- Coincidència de Patrons
- Col·leccions: Llistes, Matrius i Seqüències
Mòdul 3: Programació Funcional
Mòdul 4: Estructures de Dades Avançades
Mòdul 5: Programació Orientada a Objectes en F#
- Classes i Objectes
- Herència i Interfícies
- Barreja de Programació Funcional i Orientada a Objectes
- Mòduls i Espais de Noms
Mòdul 6: Programació Asíncrona i Paral·lela
- Fluxos de Treball Asíncrons
- Biblioteca de Tasques Paral·leles
- MailboxProcessor i Agents
- Patrons de Concurrència
Mòdul 7: Accés i Manipulació de Dades
Mòdul 8: Proves i Depuració
- Proves Unitàries amb NUnit
- Proves Basades en Propietats amb FsCheck
- Tècniques de Depuració
- Perfilat de Rendiment