我正在尝试逐行读取一个非常大的文件并替换行中的内容并写回同一个文件。我无法找到一种方法来做到这一点。目前我已经创建了一个临时文件并将替换的行保存在临时文件中,最后将临时文件内容复制到原始文件中。但我必须进行两次读取和两次写入。我想避免这种情况。有任何想法吗。
以下是我尝试过的:
file, _ := os.Open("somelargesay1GbFile.txt")
defer file.Close()
outFile, _ := os.OpenFile("temp.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777)
defer outFile.Close()
reader := bufio.NewReaderSize(file, 10*1024)
for {
bytesread, isprefix, err := reader.ReadLine()
if err != nil {
if err == io.EOF {
data := changeTheData(string(bytesread))
outFile.WriteString(data)
if !isprefix {
outFile.WriteString("\r\n")
}
} else {
log.Fatal(err)
}
break
}
data := changeTheData(string(bytesread))
outFile.WriteString(data)
if !isprefix {
outFile.WriteString("\r\n")
}
}
最后我删除文件somelargesay1GbFile.txt并将其重命名为temp.txt
四季花海
相关分类