Como lenguaje de programación, Go tiene una amplia gama de funciones integradas, incluida la capacidad de crear, leer y escribir archivos como archivos de texto (.txt).

Los archivos son componentes importantes de nuestra vida diaria en el mundo moderno. Los archivos de texto son útiles para almacenar datos estructurados legibles por humanos sin el uso de software o bases de datos externos.

Si se pregunta cómo podría comenzar a manipular archivos de texto en Go, este artículo es el lugar adecuado para usted.

El paquete bufio en Go

El bufio El paquete, que es parte de la biblioteca estándar de Go, se usa para operaciones de entrada y salida almacenadas en búfer, de ahí el nombre. El bufio el paquete se basa en el yo. Lector y yo. Escritor interfaces, que se utilizan ampliamente en la implementación de la mayoría de los paquetes estándar de Go.

El bufio El paquete va un paso más allá al implementar el almacenamiento en búfer, lo que lo hace útil para las operaciones de E/S que involucran datos textuales.

instagram viewer

Usar el bufio paquete en su programa, debe importarlo junto con otros paquetes.

importar (
"fmt"
"bufio"
)

Probablemente escuchaste cuando Empecé con Go que viene con todo lo que podrías necesitar como programador. Para la comunicación directa con su sistema operativo, existe un paquete llamado sistema operativo que proporciona funciones independientes de la plataforma.

El sistema operativo y bufio Los paquetes hacen que la manipulación de archivos de texto sea increíblemente simple.

Aunque la gran mayoría de los sistema operativo Las funciones del paquete son similares a las de Unix, todas emplean el estilo Go de manejo de errores, lo que simplifica la lectura de mensajes de error y el código de depuración.

Entonces, ¿cómo manipula archivos que contienen texto en Go?

Cómo leer datos de un archivo de texto

Para leer datos de archivos de texto, debe llamar al sistema operativo paquete Abierto() función, que acepta como parámetro el nombre del archivo a leer. Otro método para obtener el archivo es usando el Abrir documento() función.

La gran diferencia entre Abierto() y Abrir documento() está en su ejecución. Abierto() abre un archivo en modo de sólo lectura (con el O_RDONLY bandera), mientras Abrir documento() da más flexibilidad al aceptar tres parámetros, a saber:

  • Nombre del archivo
  • Modo de apertura de archivos: Los modos de apertura de archivos válidos se muestran en la siguiente tabla.
    Bandera Significado
    O_RDONLY Abre el archivo en modo de solo lectura
    O_MAL Abre el archivo en modo de solo escritura
    O_RDWR Abre el archivo en modo lectura-escritura
    O_APPEND Agrega datos al archivo al escribir
    O_CREAR Crea un nuevo archivo si no existe ninguno
    O_EXCL Usado con O_CREATE, para indicar que el archivo solo debe crearse si no existe
    O_SYNC Abre el archivo para E/S síncrona
    O_TRUNC Trunca el archivo al abrirlo, si es posible
  • Permisos de archivo: Igual que el bits de permiso de archivo en Linux se utiliza para especificar reglas de acceso a archivos, por ejemplo, 0777 para otorgar permisos de lectura, escritura y ejecución a todos los tipos de usuarios.

El siguiente código muestra cómo leer datos de un archivo de texto en Go usando so. Abierto(), y Escanear() que en este caso, se ejecuta en un ir por bucle.

paquete principal
importar (
"bufio"
"fmt"
"registro"
"sistema operativo"
)
/**
CONTENIDO DEL "archivo de prueba.txt" archivo.
lorem ipsum dolor siéntate amet
LOREM IPSUM DOLOR SIT AMET
Lorem ipsum dolor siéntate amet
Lorem Ipsum Dolor Siéntate Amet
LOREM IPSUM DOLOR SIT AMET
LoReM IpSuM DOLOR SiT AmEt
*/
función principal(){
archivo, error: = os. Abierto("archivo de prueba.txt")
// otro método usando os. Abrir documento()
// archivo, error = os. Abrir documento("archivo de prueba.txt", os. O_RDONLY, 0644)
si yerra != nil {
registro.Fatal(errar)
}
aplazararchivo.Cerca()
fmt. imprimir("Archivo abierto con éxito. Ahora leyendo el contenido del archivo línea por línea:")
// crear escáner de el archivoaleertextode
escaner :=bufio. Nuevo escáner (archivo)
// escanear o leer los bytes de texto línea por línea
paraescáner.Escanear() {
fmt.Imprimir(escáner.Texto())
}
si err := escáner. Errar(); err != nulo {
registro.Fatal(errar)
}
}

Cuando ejecutas el código anterior con ve a ejecutar filename.go, produce la salida que se muestra a continuación:

Si pasa solo el nombre del archivo y no la ruta al Abierto() o Abrir documento() función para operaciones de lectura, Go asume que el archivo está en el directorio actual y devuelve un error si no lo encuentra. Debe pasar la ruta al archivo si necesita trabajar con archivos fuera del directorio actual.

Cómo escribir datos en un archivo de texto

El bufio paquete proporciona un búfer Escritor interfaz que almacena bytes de datos y los escribe en un archivo con la ayuda de un Enjuagar() función.

El siguiente código de muestra es una continuación del que se usa para leer un archivo. En este ejemplo, los datos se escriben en el archivo existente. archivo de prueba.txt utilizando el O_MAL y O_APPEND banderas

Agregue las siguientes líneas de código al programa anterior, antes de la llave de cierre del principal() función:

// escribe los datos de salida en el archivo
archivo, err = os. OpenFile("testfile.txt", os. O_APPEND|os. O_MAL, 0644)
si error! = nulo {
registro. fatal (error)
}
aplazar archivo. Cerca()
fmt. Println("El archivo se abrió con éxito, ahora se está preparando para escribir datos en el archivo...")
// crea un objeto Writer almacenado en búfer para escribir datos en un archivo
textWriter := bufio. Nuevo escritor (archivo)
// escribe la cadena en el búfer antes de guardar el archivo.
_, err = escritor de texto. WriteString("-Este es un nuevo texto agregado al archivo").
si error! = nulo {
registro. fatal (error)
}
escritor de texto. Enjuagar()
fmt. Println("Datos escritos en el archivo con éxito...")

La salida de su programa completo debería verse así:

Cuando abres el archivo de prueba.txt archivo, también verá la nueva línea adjunta al final del archivo como en la imagen a continuación:

El manejo de archivos en Go es fácil

Go le permite trabajar con una variedad de archivos, no solo con archivos de texto. Existen numerosas bibliotecas y funciones integradas adicionales para trabajar con diferentes tipos de datos de archivos, incluidos JSON y CSV.

Para ver cómo se comportan de manera diferente según la situación, puede experimentar con las diversas banderas y permisos de archivo que están disponibles para usar con Abrir documento().