0Pricing
Swift Academy · Lección

Lectura y escritura de datos

Guarde Data y cadenas en el disco.

Lectura y escritura de datos es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Leer y escribir datos

El tipo Data de Foundation contiene bytes sin procesar, y tanto String como Data saben leer de URL de archivo y escribir en ellas.

Escribir una cadena

write(to:atomically:encoding:) guarda una cadena en una URL de archivo. Las escrituras atómicas usan un archivo temporal para evitar la corrupción.

import Foundation

let url = URL(fileURLWithPath: "/tmp/hello.txt")
try? "Hello, file!".write(to: url, atomically: true, encoding: .utf8)
print("Wrote string to disk")

Leer una cadena

String(contentsOf:encoding:) carga el archivo de nuevo en la memoria como texto.

import Foundation

let url = URL(fileURLWithPath: "/tmp/hello.txt")
if let text = try? String(contentsOf: url, encoding: .utf8) {
    print(text)
}

Trabajar con Data

Data(contentsOf:) lee cualquier archivo como bytes sin procesar, lo que resulta adecuado para imágenes, archivos comprimidos o formatos binarios.

import Foundation

let url = URL(fileURLWithPath: "/tmp/hello.txt")
if let data = try? Data(contentsOf: url) {
    print("Byte count: \(data.count)")
}

Escribir Data

data.write(to:) guarda bytes en un archivo. Combínelo con una codificación para almacenar texto o cualquier contenido serializado.

import Foundation

let bytes = Data([0x48, 0x69])
let url = URL(fileURLWithPath: "/tmp/bytes.bin")
try? bytes.write(to: url)
print("Wrote raw data")

Convertir Data en String

Convierta Data en texto mediante String(data:encoding:) cuando conozca la codificación de los bytes.

import Foundation

let data = Data([0x48, 0x69])
if let s = String(data: data, encoding: .utf8) {
    print(s)
}

Codificar JSON

Use JSONEncoder para convertir un valor Codable en Data listo para escribir en el disco.

import Foundation

struct Note: Codable { let text: String }
let data = try? JSONEncoder().encode(Note(text: "hi"))
let url = URL(fileURLWithPath: "/tmp/note.json")
try? data?.write(to: url)
print("Saved JSON")

Decodificar JSON

Lea de nuevo los datos y decodifíquelos con JSONDecoder en el tipo de su modelo.

import Foundation

struct Note: Codable { let text: String }
let url = URL(fileURLWithPath: "/tmp/note.json")
if let data = try? Data(contentsOf: url),
   let note = try? JSONDecoder().decode(Note.self, from: data) {
    print(note.text)
}

Escrituras atómicas

La opción atomically: true escribe en un archivo temporal y después le cambia el nombre, de modo que los lectores nunca ven un archivo escrito a medias.

import Foundation

let url = URL(fileURLWithPath: "/tmp/safe.txt")
try? "important".write(to: url, atomically: true, encoding: .utf8)
print("Atomic write done")

Gestionar errores

Las operaciones de archivo lanzan errores. Use do/catch para reaccionar ante archivos inexistentes o problemas de permisos en lugar de que la aplicación se cierre.

import Foundation

let url = URL(fileURLWithPath: "/does/not/exist.txt")
do {
    _ = try String(contentsOf: url, encoding: .utf8)
} catch {
    print("Read failed: \(error.localizedDescription)")
}

Añadir frente a sobrescribir

La función básica write(to:) sobrescribe el contenido. Para añadir datos, abra un FileHandle y desplácese hasta el final antes de escribir.

import Foundation

let url = URL(fileURLWithPath: "/tmp/log.txt")
if let handle = try? FileHandle(forWritingTo: url) {
    handle.seekToEndOfFile()
    handle.write(Data("line\n".utf8))
    try? handle.close()
}
print("Appended")

Comprobación rápida

¿Qué garantiza atomically: true al escribir?

Resumen

Ha leído y escrito texto con String(contentsOf:) y write(to:atomically:encoding:), ha gestionado bytes sin procesar con Data, ha guardado modelos mediante JSONEncoder/Decoder, ha usado escrituras atómicas, ha capturado errores y ha añadido datos con FileHandle. Siguiente tema: gestionar directorios.

Preguntas frecuentes

¿La lección «Lectura y escritura de datos» es gratis?

Sí — el texto completo de «Lectura y escritura de datos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Lectura y escritura de datos»?

Guarde Data y cadenas en el disco. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Lectura y escritura de datos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. URL y rutas de archivos
  2. Lectura y escritura de datos
  3. Gestión de directorios
  4. Directorios del entorno aislado de la app
← Volver a Swift Academy