У меня много маленьких файлов, я не хочу читать их построчно.
Есть ли в Go функция, которая будет читать весь файл в строковую переменную?
Используйте ioutil.ReadFile
:
func ReadFile(filename string) ([]byte, error)
ReadFile читает файл с именем filename и возвращает его содержимое. Успешный вызов возвращает err == nil, а не err == EOF. Поскольку ReadFile читает весь файл, он не рассматривает EOF из Read как ошибку, о которой будет сообщено.
Вы получите []byte
вместо string
. Это может быть преобразовано, если действительно необходимо:
s := string(buf)
Если вы просто хотите контент как
string
, тогда простое решение - использоватьReadFile
функцию изio/ioutil
пакета. Эта функция возвращает фрагмент,bytes
который вы можете легко преобразовать вstring
.источник
Я думаю, что лучше всего, если вы действительно обеспокоены эффективностью объединения всех этих файлов, это скопировать их все в один и тот же байтовый буфер.
Это открывает каждый файл, копирует его содержимое в buf, а затем закрывает файл. В зависимости от вашей ситуации вам может не понадобиться конвертировать ее, последняя строка просто показывает, что buf.Bytes () содержит искомые данные.
источник
Вот как я это сделал:
источник
Я не с компьютером, поэтому я пишу черновик. Вы можете быть ясно из того, что я говорю.
источник