En aquest tema, aprendrem com gestionar arxius en Objective-C. La gestió d'arxius és una habilitat essencial per a qualsevol desenvolupador, ja que permet emmagatzemar, llegir i manipular dades de manera persistent. Explorarem les operacions bàsiques com la creació, lectura, escriptura i eliminació d'arxius.

Objectius d'Aprenentatge

  • Comprendre els conceptes bàsics de la gestió d'arxius.
  • Aprendre a crear, llegir, escriure i eliminar arxius en Objective-C.
  • Utilitzar les classes i mètodes proporcionats per la llibreria Foundation per gestionar arxius.

Conceptes Bàsics

Classes Clau

  • NSFileManager: Aquesta classe proporciona mètodes per treballar amb el sistema de fitxers.
  • NSData: Utilitzada per representar dades binàries.
  • NSString: Utilitzada per representar dades de text.

Operacions Bàsiques

  1. Creació d'Arxius
  2. Lectura d'Arxius
  3. Escriptura d'Arxius
  4. Eliminació d'Arxius

Creació d'Arxius

Per crear un arxiu, utilitzarem la classe NSFileManager. Aquí teniu un exemple pràctic:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSString *filePath = @"/path/to/your/file.txt";
        NSString *content = @"Aquest és el contingut del fitxer.";
        
        BOOL success = [fileManager createFileAtPath:filePath contents:[content dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
        
        if (success) {
            NSLog(@"Arxiu creat amb èxit.");
        } else {
            NSLog(@"Error en crear l'arxiu.");
        }
    }
    return 0;
}

Explicació

  • NSFileManager *fileManager = [NSFileManager defaultManager];: Creem una instància de NSFileManager.
  • NSString *filePath = @"/path/to/your/file.txt";: Definim la ruta de l'arxiu.
  • NSString *content = @"Aquest és el contingut del fitxer.";: Definim el contingut de l'arxiu.
  • BOOL success = [fileManager createFileAtPath:filePath contents:[content dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];: Creem l'arxiu amb el contingut especificat.
  • if (success) { ... } else { ... }: Verifiquem si l'arxiu s'ha creat correctament.

Lectura d'Arxius

Per llegir un arxiu, utilitzarem la classe NSString o NSData. Aquí teniu un exemple pràctic:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *filePath = @"/path/to/your/file.txt";
        
        NSError *error;
        NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
        
        if (error) {
            NSLog(@"Error en llegir l'arxiu: %@", [error localizedDescription]);
        } else {
            NSLog(@"Contingut de l'arxiu: %@", content);
        }
    }
    return 0;
}

Explicació

  • NSString *filePath = @"/path/to/your/file.txt";: Definim la ruta de l'arxiu.
  • NSError *error;: Creem una instància d'NSError per capturar errors.
  • NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];: Llegim el contingut de l'arxiu.
  • if (error) { ... } else { ... }: Verifiquem si hi ha hagut algun error en llegir l'arxiu.

Escriptura d'Arxius

Per escriure en un arxiu, utilitzarem la classe NSString o NSData. Aquí teniu un exemple pràctic:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *filePath = @"/path/to/your/file.txt";
        NSString *content = @"Nou contingut per al fitxer.";
        
        NSError *error;
        BOOL success = [content writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
        
        if (success) {
            NSLog(@"Arxiu escrit amb èxit.");
        } else {
            NSLog(@"Error en escriure l'arxiu: %@", [error localizedDescription]);
        }
    }
    return 0;
}

Explicació

  • NSString *filePath = @"/path/to/your/file.txt";: Definim la ruta de l'arxiu.
  • NSString *content = @"Nou contingut per al fitxer.";: Definim el nou contingut de l'arxiu.
  • NSError *error;: Creem una instància d'NSError per capturar errors.
  • BOOL success = [content writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];: Escrivim el nou contingut a l'arxiu.
  • if (success) { ... } else { ... }: Verifiquem si l'arxiu s'ha escrit correctament.

Eliminació d'Arxius

Per eliminar un arxiu, utilitzarem la classe NSFileManager. Aquí teniu un exemple pràctic:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSString *filePath = @"/path/to/your/file.txt";
        
        NSError *error;
        BOOL success = [fileManager removeItemAtPath:filePath error:&error];
        
        if (success) {
            NSLog(@"Arxiu eliminat amb èxit.");
        } else {
            NSLog(@"Error en eliminar l'arxiu: %@", [error localizedDescription]);
        }
    }
    return 0;
}

Explicació

  • NSFileManager *fileManager = [NSFileManager defaultManager];: Creem una instància de NSFileManager.
  • NSString *filePath = @"/path/to/your/file.txt";: Definim la ruta de l'arxiu.
  • NSError *error;: Creem una instància d'NSError per capturar errors.
  • BOOL success = [fileManager removeItemAtPath:filePath error:&error];: Eliminem l'arxiu especificat.
  • if (success) { ... } else { ... }: Verifiquem si l'arxiu s'ha eliminat correctament.

Exercicis Pràctics

Exercici 1: Crear i Llegir un Arxiu

  1. Crea un arxiu anomenat notes.txt amb el contingut "Aquestes són les meves notes.".
  2. Llegeix el contingut de l'arxiu i mostra'l per pantalla.

Solució

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSString *filePath = @"/path/to/your/notes.txt";
        NSString *content = @"Aquestes són les meves notes.";
        
        // Crear l'arxiu
        BOOL success = [fileManager createFileAtPath:filePath contents:[content dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
        
        if (success) {
            NSLog(@"Arxiu creat amb èxit.");
        } else {
            NSLog(@"Error en crear l'arxiu.");
        }
        
        // Llegir l'arxiu
        NSError *error;
        NSString *readContent = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
        
        if (error) {
            NSLog(@"Error en llegir l'arxiu: %@", [error localizedDescription]);
        } else {
            NSLog(@"Contingut de l'arxiu: %@", readContent);
        }
    }
    return 0;
}

Exercici 2: Escriure i Eliminar un Arxiu

  1. Escriu el text "Actualització de les notes." a l'arxiu notes.txt.
  2. Elimina l'arxiu notes.txt.

Solució

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *filePath = @"/path/to/your/notes.txt";
        NSString *content = @"Actualització de les notes.";
        
        // Escriure a l'arxiu
        NSError *error;
        BOOL success = [content writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
        
        if (success) {
            NSLog(@"Arxiu escrit amb èxit.");
        } else {
            NSLog(@"Error en escriure l'arxiu: %@", [error localizedDescription]);
        }
        
        // Eliminar l'arxiu
        NSFileManager *fileManager = [NSFileManager defaultManager];
        success = [fileManager removeItemAtPath:filePath error:&error];
        
        if (success) {
            NSLog(@"Arxiu eliminat amb èxit.");
        } else {
            NSLog(@"Error en eliminar l'arxiu: %@", [error localizedDescription]);
        }
    }
    return 0;
}

Resum

En aquest tema, hem après a gestionar arxius en Objective-C utilitzant les classes NSFileManager, NSString i NSData. Hem explorat les operacions bàsiques de creació, lectura, escriptura i eliminació d'arxius. A més, hem practicat aquests conceptes amb exercicis pràctics per reforçar l'aprenentatge. Ara estem preparats per avançar cap a temes més complexos relacionats amb la gestió de dades.

© Copyright 2024. Tots els drets reservats