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.
MAKEUSEOF VÍDEO DEL DÍA
Si se pregunta cómo podría comenzar a manipular archivos de texto en Go, este artículo es el lugar adecuado para usted.
cosas divertidas para hacer en el trabajo cuando estás aburrido
El paquete bufio en Go
los 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. los bufio el paquete se basa en el Lector io. y io.escritor interfaces, que se utilizan ampliamente en la implementación de la mayoría de los paquetes estándar de Go.
los 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.
Usar el bufio paquete en su programa, debe importarlo junto con otros paquetes.
import (
"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 tú que proporciona funciones independientes de la plataforma.
cómo ver videos que me gustan en youtube
los tú y bufio Los paquetes hacen que la manipulación de archivos de texto sea increíblemente simple.
Aunque la gran mayoría de los tú 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.
qué hacer con los altavoces antiguos
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 tú 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 Sentido 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 os.Open() , y Escanear() que en este caso, se ejecuta en un ir por bucle .
package main
import (
"bufio"
"fmt"
"log"
"os"
)
/**
CONTENT OF THE "testfile.txt" file.
lorem ipsum dolor sit amet
LOREM IPSUM DOLOR SIT AMET
Lorem ipsum dolor sit amet
Lorem Ipsum Dolor Sit Amet
lOREM iPSUM dOLOR sIT aMET
LoReM IpSuM DoLoR SiT AmEt
*/
func main() {
file, err := os.Open("testfile.txt")
// another method using os.OpenFile()
// file, err = os.OpenFile("testfile.txt", os.O_RDONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer file.()
fmt.Println("File opened successfully. Now reading file contents line by line:")
// create scanner from the file to read text from
scanner := bufio.NewScanner(file)
// scan or read the bytes of text line by line
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
}
Cuando ejecutas el código anterior con ve a ejecutar filename.go , produce la salida que se muestra a continuación: