Leer un archivo en una cadena en Go

Musfirah Waseem 20 junio 2023
  1. Utilice el método ioutil.ReadFile() en Go
  2. Utilice el método File.Read() en Go
  3. Utilice el método buf.ReadFrom() en Go
  4. Utilice el método strings.Builder en Go
Leer un archivo en una cadena en Go

GoLang proporciona muchas herramientas operaciones de archivos, una de las cuales es cómo leer un archivo en una cadena. El ioutil.ReadFile(), File.Read(), buf.ReadFrom() y strings.Builder son solo algunos de los métodos que se pueden usar para escribir eficientemente el contenido de un archivo en un cadena.

Utilice el método ioutil.ReadFile() en Go

package main

import
(
    "fmt"

    "io/ioutil"
)

func main() {

    inputData := []byte("Hello, World!")

    err := ioutil.WriteFile("File.txt", inputData, 0777)

    Data, err := ioutil.ReadFile("File.txt")

    if err != nil {

        fmt.Println(err)
    }

    fmt.Print(string(Data))

}

Producción :

Hello, World!

El código anterior nos permite crear un nuevo archivo y escribir datos. A continuación, el archivo creado se lee con el método ioutil.ReadFile().

Utilice el método File.Read() en Go

package main

import (
    "fmt"

    "io/ioutil"

    "log"

    "os"

    "io"
)

func main() {

    inputData := []byte("Hello, World!")

    err := ioutil.WriteFile("file.txt", inputData, 0777)

    f, err := os.Open("file.txt")

    if err != nil {
        log.Fatalf("Error in reading file: %v", err)
    }

    defer f.Close()

    buf := make([]byte, 1024)

    for {
        n, err := f.Read(buf)

	if err == io.EOF {

		break
	}
	if err != nil {

		fmt.Println(err)

		continue
	}
	if n > 0 {

		fmt.Println(string(buf[:n]))
	}
    }
}

Producción :

Hello, World!

En el código anterior, estamos leyendo el archivo dividiéndolo. Especificamos el tamaño del búfer que queremos leer cada vez, y luego solo se asigna len(buf) en la memoria.

Luego, el archivo se lee en partes a través de cada iteración. Este método se usa principalmente para archivos grandes, donde el contenido de un archivo no puede caber por completo en la memoria.

Utilice el método buf.ReadFrom() en Go

package main

import (
  "fmt"

  "io/ioutil"

  "os"

  "bytes"

  "log"
)

func main() {
    inputData := []byte("Hello, World!")

    err := ioutil.WriteFile("File.txt", inputData, 0777)

   f, err := os.Open("File.txt")

   if err != nil{

     log.Fatal(err)
   }
   defer f.Close()

   buf := new(bytes.Buffer)

   buf.ReadFrom(f)

   data := buf.String()

   fmt.Print(data)

}

Producción :

Hello, World!

En el código anterior, hemos usado buf.ReadFrom() que lee datos desde el archivo hasta EOF y los agrega al búfer; el tamaño del búfer crece según sea necesario.

Utilice el método strings.Builder en Go

package main

import (
    "io/ioutil"

   "io"

   "os"

   "strings"
)

func main() {
    inputData := []byte("Hello, World!")

    err := ioutil.WriteFile("file.txt", inputData, 0777)

   f, err := os.Open("file.txt")

   if err != nil {

      panic(err)
   }

   defer f.Close()

   b := new(strings.Builder)

   io.Copy(b, f)

   print(b.String())
}

Producción :

Hello, World!

En el código anterior, strings.Builder concatena las cadenas. Los datos se leen del archivo pieza por pieza y luego se juntan para imprimirlos.

Musfirah Waseem avatar Musfirah Waseem avatar

Musfirah is a student of computer science from the best university in Pakistan. She has a knack for programming and everything related. She is a tech geek who loves to help people as much as possible.

LinkedIn

Artículo relacionado - Go File

Artículo relacionado - Go String