我无法file.ReadLine在Go中找到功能.我可以弄清楚如何快速写一个,但只是想知道我是否在这里忽略了一些东西.如何逐行读取文件?
我有一个平面文件,其中包含339276行文本,大小为62.1 MB.我试图读取所有行,根据我的一些条件解析它们,然后将它们插入到数据库中.
我最初尝试使用bufio.Scan()循环和bufio.Text()来获取行,但我的缓冲区空间不足.我切换到使用bufio.ReadLine/ReadString/ReadByte(我尝试了每个)并且每个都有相同的问题.我没有足够的缓冲空间.
我尝试使用read并设置缓冲区大小,但正如文档所说,它实际上是一个const,可以做得更小但从不大于64*1024字节.然后我尝试使用File.ReadAt设置起始postilion并将其移动,因为我带来了每个部分无济于事.我查看了以下示例和解释(不是详尽的列表):
将文本文件读入字符串数组(并写入) 如何读取大文件中的最后一行,每隔10秒 读取一行中的文件go go
我如何将整个文件(一行一行或一次整个)读入一个切片,这样我就可以去做行了?
这是我尝试过的一些代码:
file, err := os.Open(feedFolder + value)
handleError(err)
defer file.Close()
// fileInfo, _ := file.Stat()
var linesInFile []string
r := bufio.NewReader(file)
for {
path, err := r.ReadLine("\n") // 0x0A separator = newline
linesInFile = append(linesInFile, path)
if err == io.EOF {
fmt.Printf("End Of File: %s", err)
break
} else if err != nil {
handleError(err) // if you return error
}
}
fmt.Println("Last Line: ", linesInFile[len(linesInFile)-1])
Run Code Online (Sandbox Code Playgroud)
这是我尝试的其他东西:
var fileSize int64 = …Run Code Online (Sandbox Code Playgroud)