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
