typestar

Archivos en Go

Leer un archivo entero, escribir uno, o abrirlo y diferir el cierre.

func writeThenRead(dir string) (string, error) {
    path := filepath.Join(dir, "runs.txt")
    if err := os.WriteFile(path, []byte("go 104\n"), 0o600); err != nil {
        return "", fmt.Errorf("write: %w", err)
    }

    file, err := os.Open(path)
    if err != nil {
        return "", fmt.Errorf("open: %w", err)
    }
    defer file.Close()

    info, err := file.Stat()
    if err != nil {
        return "", fmt.Errorf("stat: %w", err)
    }

    data, err := io.ReadAll(file)
    if err != nil {
        return "", fmt.Errorf("read: %w", err)
    }
    text := strings.TrimSpace(string(data))
    return fmt.Sprintf("%d bytes: %s", info.Size(), text), nil
}

Cómo funciona

  1. os.ReadFile y os.WriteFile cubren los casos simples.
  2. defer file.Close() va justo después del chequeo de error.
  3. El argumento de modo importa en la ruta de escritura.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
24
Caracteres a escribir
575
Tokens
173
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 99 segundos.

Escribe este fragmento

Paso 2 de 3 en Archivos e IO; paso 7 de 26 en Biblioteca estándar y estructura del proyecto.

← Anterior Siguiente →