使用Go語言實現(xiàn)向文件寫入內(nèi)容的示例代碼
更新時間:2025年07月20日 09:16:55 作者:程序員愛釣魚
向文件寫入內(nèi)容 的完整內(nèi)容,這是文件操作的另一個核心技能,與讀取配套,適用于日志記錄、生成報告、寫配置等場景,本文通過代碼示例介紹的非常詳細,需要的朋友可以參考下
一、案例目標
編寫一個 Go 程序,將一段字符串內(nèi)容寫入到本地 .txt 文件中。若文件不存在則自動創(chuàng)建,存在則覆蓋寫入或追加寫入。
二、應用場景示例
- 日志系統(tǒng):寫入運行記錄、用戶行為
- 自動生成報告:寫結(jié)果到文件中
- 導出數(shù)據(jù):如導出表格、文本分析報告
- 寫配置文件或緩存
三、涉及知識點
| 知識點 | 說明 |
|---|---|
| os.WriteFile | 快捷寫入整個內(nèi)容 |
| os.OpenFile | 控制寫入模式(創(chuàng)建/追加/覆蓋) |
| defer 關(guān)閉文件 | 避免資源泄露 |
| 字符編碼 | Go 默認 UTF-8 支持中文無障礙 |
四、功能需求
- 將一段字符串寫入指定文件;
- 自動創(chuàng)建新文件;
- 支持兩種寫入模式:覆蓋寫入 & 追加寫入;
- 寫入完成提示用戶。
五、示例代碼:覆蓋寫入(適合生成報告)
package main
import (
"fmt"
"os"
)
func main() {
content := "你好,Go語言!\n這是一段寫入文件的文本內(nèi)容。\n"
filename := "output.txt"
err := os.WriteFile(filename, []byte(content), 0644)
if err != nil {
fmt.Println("寫入文件失?。?, err)
return
}
fmt.Println("內(nèi)容已成功寫入文件:", filename)
}
執(zhí)行后,會在當前目錄生成 output.txt 文件,內(nèi)容如下:
你好,Go語言! 這是一段寫入文件的文本內(nèi)容。
六、示例代碼:追加寫入(適合日志、歷史記錄)
package main
import (
"fmt"
"os"
)
func main() {
filename := "log.txt"
content := "【INFO】程序運行于:" + timeNow() + "\n"
// 打開文件并設置為追加寫入模式
file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
fmt.Println("打開文件失敗:", err)
return
}
defer file.Close()
_, err = file.WriteString(content)
if err != nil {
fmt.Println("寫入失?。?, err)
return
}
fmt.Println("追加寫入成功:", content)
}
// 獲取當前時間
func timeNow() string {
return fmt.Sprintf("%s", os.Getenv("TZ")) // 或 time.Now().Format("2006-01-02 15:04:05")
}
日志會被追加到 log.txt 文件末尾。
七、權(quán)限解釋
| 權(quán)限模式 | 含義 |
|---|---|
| 0644 | 所有者可讀寫,其他用戶只讀 |
| 0666 | 所有人可讀寫(不推薦) |
| os.O_CREATE | 文件不存在時創(chuàng)建 |
| os.O_APPEND | 寫入追加到末尾 |
| os.O_WRONLY | 只寫模式 |
八、拓展建議
- 寫入用戶輸入的內(nèi)容(結(jié)合
fmt.Scanln); - 支持文件名通過命令行參數(shù)指定;
- 每次寫入自動記錄時間戳;
- 寫 JSON/CSV 文件(見后續(xù)案例);
- 實現(xiàn)簡單的記事本工具或日志記錄器;
小結(jié)
通過本案例你學會了:
- 如何創(chuàng)建并寫入本地文件
- 快速寫入 vs 控制寫入模式
- 寫入中文、自動編碼無障礙
- 錯誤處理與資源釋放的好習慣
以上就是使用Go語言實現(xiàn)向文件寫入內(nèi)容的示例代碼的詳細內(nèi)容,更多關(guān)于Go向文件寫入內(nèi)容的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Go Mongox輕松實現(xiàn)MongoDB的時間字段自動填充
這篇文章主要為大家詳細介紹了Go語言如何使用 mongox 庫,在插入和更新數(shù)據(jù)時自動填充時間字段,從而提升開發(fā)效率并減少重復代碼,需要的可以參考下2025-02-02
Go語言實現(xiàn)的排列組合問題實例(n個數(shù)中取m個)
這篇文章主要介紹了Go語言實現(xiàn)的排列組合問題,結(jié)合實例形式分析了Go語言實現(xiàn)排列組合數(shù)學運算的原理與具體操作技巧,需要的朋友可以參考下2017-02-02
golang中channel+error來做異步錯誤處理有多香
官方推薦golang中錯誤處理當做值處理, 既然是值那就可以在channel中傳輸,這篇文章主要介紹了golang 錯誤處理channel+error真的香,需要的朋友可以參考下2023-01-01

