f, err := os.Open("path")
if err != nil {
panic(err)
}
b := make([]byte, 1)
for {
err := f.Read(b)
if err != nil && !errors.Is(err, io.EOF) {
fmt.Println(err)
break
}
// process the one byte b[0]
if err != nil {
// end of file
break
}
}
但是,您更希望高效地读取文件,并且一次 * 处理 * 一个字节。
f, err := os.Open("path")
if err != nil {
panic(err)
}
br := bufio.NewReader(f)
// infinite loop
for {
b,err := br.ReadByte()
if err != nil && !errors.Is(err, io.EOF) {
fmt.Println(err)
break
}
// process the one byte b
if err != nil {
// end of file
break
}
}
1条答案
按热度按时间l5tcr1uw1#
你要一次把整个文件作为字符串(而不是字节)读取,然后逐个字符串(而不是逐个字节)地处理它。要一次一个字节地读取文件(这很可能不是你想要的),你必须这样做:
但是,您更希望高效地读取文件,并且一次 * 处理 * 一个字节。