Tengo muchos archivos pequeños, no quiero leerlos línea por línea.
¿Hay una función en Go que lea un archivo completo en una variable de cadena?
Uso ioutil.ReadFile
:
func ReadFile(filename string) ([]byte, error)
ReadFile lee el archivo nombrado por nombre de archivo y devuelve el contenido. Una llamada exitosa devuelve err == nil, no err == EOF. Debido a que ReadFile lee todo el archivo, no trata un EOF de Read como un error que se debe informar.
Obtendrá un en []byte
lugar de un string
. Se puede convertir si es realmente necesario:
s := string(buf)
Si solo desea el contenido como
string
, entonces la solución simple es usar laReadFile
función delio/ioutil
paquete. Esta función devuelve una porción de labytes
cual puede convertir fácilmente astring
.fuente
Creo que lo mejor que puedes hacer, si realmente te preocupa la eficacia de concatenar todos estos archivos, es copiarlos en el mismo búfer de bytes.
Esto abre cada archivo, copia su contenido en buf, luego cierra el archivo. Dependiendo de su situación, es posible que no necesite convertirlo, la última línea es solo para mostrar que buf.Bytes () tiene los datos que está buscando.
fuente
Así es como lo hice:
fuente
No estoy con la computadora, así que escribo un borrador. Podrías estar claro de lo que digo.
fuente