У меня проблема: мне нужно использовать bufio.read для чтения файла tsv построчно, и мне нужно записать, сколько байтов составляет каждая строка, которую я прочитал.
Проблема в том, что я не могу просто инициализировать пустой фрагмент и передать его в bufio.read и ожидать, что фрагмент будет содержать всю строку файла.
file, _ := os.Open("file.tsv")
reader := bufio.NewReader(file)
b := make([]byte, 10)
for {
bytesRead, err:= reader.Read(b)
fmt.Println(bytesRead, b)
if err != nil {
break
}
}
Итак, для этого примера, поскольку я указал срез равным 10 байтам, программа чтения прочитает не более 10 байтов, даже если строка больше 10 байтов.
Однако:
file, _ := os.Open("file.tsv")
reader := bufio.NewReader(file)
b := byte{} //or var b []byte
for {
bytesRead, err:= reader.Read(b)
fmt.Println(bytesRead, b)
if err != nil {
break
}
}
Это всегда будет считывать 0 байтов, и я предполагаю, что буфер имеет длину 0 или емкость 0.
Как прочитать файл построчно, сохранить всю строку в переменной или буфере и вернуть точное количество байтов, которые я прочитал?
Спасибо!