Golang 用 buffer 读取文件
在 Golang 中,我们可以使用 bufio
包的 NewReader
函数创建一个新的 Reader
对象,然后使用该对象的 ReadBytes
或 ReadString
方法来读取文件。
以下是一些示例代码:
方法一:使用 ReadBytes
方法
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("test.txt")
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
reader := bufio.NewReader(file)
for {
line, err := reader.ReadBytes('\n')
if err != nil {
break
}
fmt.Println(string(line))
}
}
在这个例子中,ReadBytes
方法读取到换行符 \n
时,才停止读取,然后将读取到的内容转换为字符串并打印。
方法二:使用 ReadString
方法
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("test.txt")
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
reader := bufio.NewReader(file)
for {
line, err := reader.ReadString('\n')
if err != nil {
break
}
fmt.Println(line)
}
}
在这个例子中,ReadString
方法读取到换行符 \n
时,才停止读取,然后将读取到的内容并打印。
注意:这两个方法都会在读取到定界符时停止读取,并且包含定界符。如果文件的最后一行没有以定界符结束,那么在读取完文件后,ReadBytes
和 ReadString
会返回 io.EOF
作为错误。这是正常的,我们可以通过检查这个错误来判断是否还有更多的数据可以读取。
评论已关闭