Saya punya banyak file kecil, saya tidak ingin membacanya baris demi baris.
Apakah ada fungsi di Go yang akan membaca seluruh file menjadi variabel string?
Gunakan ioutil.ReadFile
:
func ReadFile(filename string) ([]byte, error)
ReadFile membaca file bernama nama file dan mengembalikan konten. Panggilan yang berhasil mengembalikan err == nil, bukan err == EOF. Karena ReadFile membaca seluruh file, itu tidak memperlakukan EOF dari Baca sebagai kesalahan untuk dilaporkan.
Anda akan mendapatkan yang []byte
bukan string
. Ini dapat dikonversi jika benar - benar diperlukan:
s := string(buf)
Jika Anda hanya menginginkan konten sebagai
string
, maka solusi sederhana adalah dengan menggunakanReadFile
fungsi dariio/ioutil
paket. Fungsi ini mengembalikan sepotongbytes
yang Anda dapat dengan mudah dikonversi menjadistring
.sumber
Saya pikir hal terbaik yang harus dilakukan, jika Anda benar-benar khawatir tentang efisiensi menggabungkan semua file-file ini, adalah menyalin semua ke buffer byte yang sama.
Ini membuka setiap file, menyalin isinya ke buf, lalu menutup file. Bergantung pada situasi Anda, Anda mungkin tidak perlu mengubahnya, baris terakhir hanya untuk menunjukkan bahwa buf.Bytes () memiliki data yang Anda cari.
sumber
Beginilah cara saya melakukannya:
sumber
Saya tidak menggunakan komputer, jadi saya menulis konsep. Anda mungkin jelas dengan apa yang saya katakan.
sumber