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

  1. Namespace System.IO: Conté classes per treballar amb fitxers i directoris.
  2. 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 i StreamWriter: Per llegir i escriure fitxers de text.
    • FileStream: Per treballar amb fitxers binaris.

Exemples Pràctics

  1. 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.");
        }
    }
}

  1. 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.");
    }
}

  1. 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.");
    }
}

  1. 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.");
        }
    }
}

  1. 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.

© Copyright 2024. Tots els drets reservats