【发布时间】:2019-11-27 16:21:15
【问题描述】:
我正在尝试以缓冲方式读取文件,因为我有非常大的文件。我想对文件应用一些文本替换。假设每次阅读我都搜索一个单词“foo”并将其替换为其他单词“bar”。如果我使用某个大小为 5MB 的缓冲区进行读取,那么 foo 可能会分成两次读取,可能一次读取 'fo',另一次读取 'o',那么我将无法找到该单词。有没有办法让我可以使用缓冲读取到最后一个换行符,或者可以在缓冲区中读取多行 我在下面做了。但它不会读到下一行或上一行
file, err := os.Open(filename)
if err != nil {
panic(err)
}
defer file.Close()
byteSlice := make([]byte, 5*1024*1024) // read 5 MB
bufioreader := bufio.NewReaderSize(file, bufferSize)
for {
n, err := bufioreader.Read(byteSlice)
if n > 0 {
fmt.Println(byteSlice[:n])
} else if err == io.EOF {
break
} else {
panic(err)
}
}
【问题讨论】:
标签: go