Tenho muitos arquivos pequenos, não quero lê-los linha por linha.
Existe uma função no Go que lê um arquivo inteiro em uma variável de string?
Use ioutil.ReadFile
:
func ReadFile(filename string) ([]byte, error)
ReadFile lê o arquivo nomeado pelo nome do arquivo e retorna o conteúdo. Uma chamada bem-sucedida retorna err == nil, não err == EOF. Como o ReadFile lê o arquivo inteiro, ele não trata um EOF de Read como um erro a ser relatado.
Você receberá um em []byte
vez de um string
. Pode ser convertido se realmente necessário:
s := string(buf)
Se você deseja apenas o conteúdo como
string
, a solução simples é usar aReadFile
função doio/ioutil
pacote. Essa função retorna uma fatia dabytes
qual você pode facilmente converter em astring
.fonte
Acho que a melhor coisa a fazer, se você estiver realmente preocupado com a eficiência da concatenação de todos esses arquivos, é copiá-los no mesmo buffer de bytes.
Isso abre cada arquivo, copia seu conteúdo para o buf e depois fecha o arquivo. Dependendo da sua situação, talvez você não precise convertê-la, a última linha é apenas para mostrar que o buf.Bytes () tem os dados que você está procurando.
fonte
Foi assim que eu fiz:
fonte
Não estou com computador, então escrevo um rascunho. Você pode ter certeza do que eu digo.
fonte