我正在尝试逐行读取一个非常大的文件,然后替换行中的某些内容并写回同一个文件。我找不到办法做到这一点。目前我已经创建了一个临时文件并将替换的行保存在临时文件中,最后将临时文件内容复制到原始文件中。但我必须进行两次读取和两次写入。我想避免这种情况。有任何想法吗。
以下是我尝试过的:
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
临摹微笑
相关分类