通八洲科技

如何使用Golang实现文件内容替换_读取修改再写回文件

日期:2025-12-25 00:00 / 作者:P粉602998670
文件替换需先读取再安全写回:用os.ReadFile读取,strings.ReplaceAll或regexp进行字符串/正则替换,再通过.tmp临时文件+os.Rename原子更新,避免覆盖丢失。

直接读取文件内容,用字符串或正则替换后写回原文件即可,关键在于避免覆盖、处理编码和错误。

读取文件内容并做字符串替换

使用 os.ReadFile 读取整个文件到内存(适合中小文件),再用 strings.ReplaceAllstrings.Replace 修改:

用正则表达式进行灵活替换

当匹配逻辑复杂(如替换带数字的版本号、特定格式的 URL)时,用 regexp 包:

安全写回原文件(防数据丢失)

不要直接 os.WriteFile(filename, newBytes, 0644) 覆盖——万一出错会丢原文件。推荐两步法:

完整示例代码(含错误处理)

// 替换文件中所有 "GO_VERSION" 为 "1.22"

data, err := os.ReadFile("config.txt")
if err != nil {
  log.Fatal(err)
}
newData := strings.ReplaceAll(string(data), "GO_VERSION", "1.22")
err = os.WriteFile("config.txt.tmp", []byte(newData), 0644)
if err != nil {
  log.Fatal(err)
}
err = os.Rename("config.txt.tmp", "config.txt")
if err != nil {
  log.Fatal(err)
}