Introducció
En aquest tema, aprendrem com treballar amb fitxers en C#. La gestió de fitxers és una part essencial de moltes aplicacions, ja que permet emmagatzemar i recuperar dades de manera persistent. C# proporciona diverses classes i mètodes per facilitar la lectura i escriptura de fitxers.
Conceptes Clau
- Namespace
System.IO
: Conté classes per treballar amb fitxers i directoris. - Classes Principals:
File
: Proporciona mètodes estàtics per crear, copiar, suprimir, moure i obrir fitxers.FileInfo
: Proporciona mètodes d'instància per treballar amb fitxers.StreamReader
iStreamWriter
: Per llegir i escriure fitxers de text.FileStream
: Per treballar amb fitxers binaris.
Exemples Pràctics
- Llegir un Fitxer de Text
using System; using System.IO; class Program { static void Main() { string path = "example.txt"; // Comprovar si el fitxer existeix if (File.Exists(path)) { // Llegir tot el contingut del fitxer string content = File.ReadAllText(path); Console.WriteLine("Contingut del fitxer:"); Console.WriteLine(content); } else { Console.WriteLine("El fitxer no existeix."); } } }
- Escriure en un Fitxer de Text
using System; using System.IO; class Program { static void Main() { string path = "example.txt"; string content = "Hola, món! Aquest és un exemple d'escriptura en un fitxer."; // Escriure el contingut al fitxer File.WriteAllText(path, content); Console.WriteLine("Contingut escrit al fitxer."); } }
- Afegir Text a un Fitxer
using System; using System.IO; class Program { static void Main() { string path = "example.txt"; string additionalContent = "\nAquest és un text afegit."; // Afegir el contingut al fitxer File.AppendAllText(path, additionalContent); Console.WriteLine("Contingut afegit al fitxer."); } }
- Llegir un Fitxer de Text Línia per Línia
using System; using System.IO; class Program { static void Main() { string path = "example.txt"; // Comprovar si el fitxer existeix if (File.Exists(path)) { // Llegir el fitxer línia per línia string[] lines = File.ReadAllLines(path); Console.WriteLine("Contingut del fitxer línia per línia:"); foreach (string line in lines) { Console.WriteLine(line); } } else { Console.WriteLine("El fitxer no existeix."); } } }
- Treballar amb Fitxers Binari
using System; using System.IO; class Program { static void Main() { string path = "example.bin"; // Escriure dades binàries al fitxer using (FileStream fs = new FileStream(path, FileMode.Create)) { using (BinaryWriter writer = new BinaryWriter(fs)) { writer.Write(1.25); writer.Write("Hola, món!"); writer.Write(true); } } // Llegir dades binàries del fitxer using (FileStream fs = new FileStream(path, FileMode.Open)) { using (BinaryReader reader = new BinaryReader(fs)) { double a = reader.ReadDouble(); string b = reader.ReadString(); bool c = reader.ReadBoolean(); Console.WriteLine($"Double: {a}, String: {b}, Boolean: {c}"); } } } }
Exercicis Pràctics
Exercici 1: Comptar Paraules en un Fitxer de Text
Descripció: Escriu un programa que llegeixi un fitxer de text i compti el nombre de paraules que conté.
Pistes:
- Utilitza
File.ReadAllText
per llegir el contingut del fitxer. - Utilitza
String.Split
per dividir el text en paraules.
Solució:
using System; using System.IO; class Program { static void Main() { string path = "example.txt"; if (File.Exists(path)) { string content = File.ReadAllText(path); string[] words = content.Split(new char[] { ' ', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); Console.WriteLine($"El fitxer conté {words.Length} paraules."); } else { Console.WriteLine("El fitxer no existeix."); } } }
Exercici 2: Copiar un Fitxer
Descripció: Escriu un programa que copiï el contingut d'un fitxer a un altre fitxer.
Pistes:
- Utilitza
File.Copy
per copiar el fitxer.
Solució:
using System; using System.IO; class Program { static void Main() { string sourcePath = "example.txt"; string destinationPath = "copy_example.txt"; if (File.Exists(sourcePath)) { File.Copy(sourcePath, destinationPath, true); Console.WriteLine("Fitxer copiat correctament."); } else { Console.WriteLine("El fitxer d'origen no existeix."); } } }
Resum
En aquesta secció, hem après com treballar amb fitxers en C# utilitzant el namespace System.IO
. Hem vist com llegir i escriure fitxers de text, afegir contingut a un fitxer existent, llegir fitxers línia per línia i treballar amb fitxers binaris. També hem practicat amb exercicis per reforçar els conceptes apresos. En el proper tema, explorarem la serialització per emmagatzemar objectes complexos en fitxers.
Curs de Programació en C#
Mòdul 1: Introducció al C#
- Introducció al C#
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
Mòdul 2: Estructures de Control
Mòdul 3: Programació Orientada a Objectes
Mòdul 4: Conceptes Avançats de C#
- Interfícies
- Delegats i Esdeveniments
- Genèrics
- Col·leccions
- LINQ (Consulta Integrada al Llenguatge)
- Programació Asíncrona
Mòdul 5: Treballant amb Dades
Mòdul 6: Temes Avançats
- Reflexió
- Atributs
- Programació Dinàmica
- Gestió de Memòria i Recollida d'Escombraries
- Multifil i Programació Paral·lela
Mòdul 7: Construcció d'Aplicacions
Mòdul 8: Millors Pràctiques i Patrons de Disseny
- Estàndards de Codificació i Millors Pràctiques
- Patrons de Disseny
- Proves Unitàries
- Revisió de Codi i Refactorització