【发布时间】:2016-10-04 18:20:54
【问题描述】:
我正在使用bufio 扫描仪的.Scan() 方法来读取文本文件行。但是,当我在文件行中达到一定大小时,扫描仪不再允许我读取,它只会返回一个空行。
我应该如何配置缓冲区以接收大量数据?
bigfile.txt 只是一个文件,其中一行中有许多整数,由空格分隔。例如,一行 40000 个整数。 (请注意,它适用于 10000 及以下的文件行,但不适用于 40000 的文件行)
234 544 765 45 34 67 67 87 98 43 [... n = 40000 ]
func main() {
readInputFile("bigfile.txt")
}
func readInputFile(name string) {
inFile, _ := os.Open(name)
defer inFile.Close()
scanner := bufio.NewScanner(inFile)
for scanner.Scan() {
line := scanner.Text()
fmt.Printf(line)
}
}
【问题讨论】:
-
在您的
for循环之后添加对scanner.Err()的调用,看看它会给您带来什么。也许那里有一些有用的东西? golang.org/pkg/bufio/#Scanner.Err