Escritura de archivos y archivos temporales
WriteFile, indicadores de OpenFile y archivos temporales
Escritura de archivos y archivos temporales es una lección gratuita de Go 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 Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
os.WriteFile
os.WriteFile escribe un slice de bytes en un archivo de forma atómica (lo trunca y luego escribe). Es una opción sencilla para archivos pequeños.
err := os.WriteFile("output.txt", []byte("hello"), 0644)
if err != nil { log.Fatal(err) }os.Create y defer Close
os.Create crea o trunca un archivo y devuelve un *os.File. Ciérrelo siempre con defer.
f, err := os.Create("output.txt")
if err != nil { return err }
defer f.Close()
f.WriteString("hello\n")os.OpenFile con indicadores
Use os.OpenFile para los modos de agregar, crear si no existe o crear de forma exclusiva:
f, err := os.OpenFile("log.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)bufio.Writer
Envuelva un archivo en bufio.NewWriter para agrupar escrituras pequeñas en llamadas al sistema más grandes. Llame a Flush() antes de cerrar para escribir todos los datos almacenados en el búfer.
w := bufio.NewWriter(f)
fmt.Fprintf(w, "line %d\n", i)
w.Flush()fmt.Fprintf
Escriba texto con formato en cualquier io.Writer, incluidos los archivos:
fmt.Fprintf(f, "name: %s, age: %d\n", name, age)Patrón de escritura atómica de archivos
Escriba en un archivo temporal y, después, cámbiele el nombre para sustituir el archivo de destino. El cambio de nombre es atómico en POSIX; los lectores ven el archivo antiguo o el nuevo, nunca una escritura parcial.
tmp, _ := os.CreateTemp("", "output-*.txt")
tmp.Write(data)
tmp.Close()
os.Rename(tmp.Name(), "output.txt")os.CreateTemp
os.CreateTemp(dir, pattern) crea un archivo temporal en dir con un nombre único que coincide con pattern. Devuelve el archivo abierto. La eliminación es responsabilidad de quien lo llama.
f, err := os.CreateTemp("", "upload-*.json")
defer os.Remove(f.Name()) // cleanupos.MkdirTemp
os.MkdirTemp crea un directorio temporal. Úselo para recursos de prueba o flujos de procesamiento que creen varios archivos temporales.
dir, err := os.MkdirTemp("", "batch-*")
defer os.RemoveAll(dir)Permisos de archivos
Pase bits de permisos de Unix (por ejemplo, 0644 para lectura y escritura del propietario y lectura del grupo y de los demás usuarios) como último argumento de las funciones de tipo Create. La umask del proceso puede restringirlos aún más.
Comprobación de errores de escritura
f.WriteString y fmt.Fprintf pueden devolver errores (disco lleno o permisos insuficientes). Compruebe los errores o acumúlelos con un wrapper de escritura que registre el primer error.
sync.File no es seguro para uso concurrente
Varias goroutines que escriben simultáneamente en el mismo *os.File pueden intercalar las escrituras. Use un mutex o una única goroutine dedicada a escribir.
Comprobación rápida
¿Por qué se considera atómico el patrón de escribir en un archivo temporal y cambiarle después el nombre?
Resumen: escritura de archivos
Puntos clave:
- os.WriteFile: sobrescritura sencilla; bufio.Writer: agrupa escrituras pequeñas
- Escritura atómica: archivo temporal + cambio de nombre
- os.CreateTemp / os.MkdirTemp para recursos temporales; posponga siempre la limpieza con defer
- Compruebe los errores de escritura y sincronice las escrituras concurrentes
Preguntas frecuentes
¿La lección «Escritura de archivos y archivos temporales» es gratis?
Sí — el texto completo de «Escritura de archivos y archivos temporales» 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 Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Escritura de archivos y archivos temporales»?
WriteFile, indicadores de OpenFile y archivos temporales Practicas Go 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 Go Academy?
No se requiere experiencia previa. Go 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 «Escritura de archivos y archivos temporales»?
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 Go Academy?
Sí. Cada lección de Go 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
- Lectura de archivos con os y bufio
- Escritura de archivos y archivos temporales
- Codificación y decodificación de JSON
- JSON y CSV en streaming