Trabajo con el sistema de archivos en Swift: guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción al trabajo con el sistema de archivos en Swift



El desarrollo para iOS y macOS a menudo requiere interactuar con el sistema de archivos del dispositivo. Ya sea guardar datos de usuario, almacenar en caché imágenes o exportar documentos, saber trabajar con archivos y carpetas es una habilidad obligatoria para cualquier desarrollador Swift. En este artículo, analizaremos en detalle cómo usar FileManager, URL y Data para realizar todas las operaciones básicas con el sistema de archivos.



Veremos la creación, lectura, escritura y eliminación de archivos, así como la navegación por directorios. Todos los ejemplos de código están escritos en Swift 5 y son adecuados tanto para proyectos iOS como macOS.



Componentes principales: FileManager y URL



En Swift, la clase central para trabajar con el sistema de archivos es FileManager. Proporciona métodos para gestionar archivos, directorios y sus atributos. Para especificar rutas se utiliza la estructura URL, que es una alternativa más segura y moderna a las cadenas de texto.



Obtención de directorios estándar



Lo primero que hay que saber es cómo obtener las rutas a los directorios estándar del sistema. Para iOS, estos son normalmente Documents, Library/Caches y tmp.



import Foundation

let fileManager = FileManager.default

// Directorio Documentsguard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { fatalError("No se pudo obtener el directorio Documents")}print("Documents: \\(documentsURL.path)")

// Directorio Cachesguard let cachesURL = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first else { fatalError("No se pudo obtener el directorio Caches")}print("Caches: \\(cachesURL.path)")

// Directorio temporallet tempURL = fileManager.temporaryDirectoryprint("Temp: \\(tempURL.path)")


Creación y escritura de archivos



La creación de un archivo en Swift es una combinación de crear una ruta y escribir datos. Veamos dos enfoques principales.



Escritura de datos de texto



func createTextFile() {    guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }        let fileURL = documentsURL.appendingPathComponent("example.txt")    let content = "¡Hola, mundo! Este es un archivo de prueba."        do {        try content.write(to: fileURL, atomically: true, encoding: .utf8)        print("Archivo creado exitosamente en la ruta: \\(fileURL.path)")    } catch {        print("Error al escribir el archivo: \\(error.localizedDescription)")    }}


Escritura de datos binarios (imágenes, archivos comprimidos)



func createBinaryFile() {    guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }        let fileURL = documentsURL.appendingPathComponent("data.bin")    let data = Data([0x48, 0x65, 0x6C, 0x6C, 0x6F]) // "Hello" en hex        do {        try data.write(to: fileURL, options: .atomic)        print("Archivo binario creado")    } catch {        print("Error: \\(error)")    }}


Creación de directorios



func createDirectory() {    guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }        let newDirURL = documentsURL.appendingPathComponent("MyFolder")        do {        try fileManager.createDirectory(at: newDirURL, withIntermediateDirectories: true, attributes: nil)        print("Directorio creado: \\(newDirURL.path)")    } catch {        print("Error al crear el directorio: \\(error)")    }}


Lectura y verificación de archivos



Una vez que los archivos están creados, es necesario saber leerlos y verificar su existencia.



Verificación de existencia de un archivo



func fileExists(at url: URL) -> Bool {    return fileMan                

Blogs

Book Recommendations