Go語言實現(xiàn)多文本文件合并的示例代碼
案例目標
使用 Go 語言將指定目錄下的多個 .txt 文件,合并成一個新的總文件。
應(yīng)用場景
- 將多個日志、分段文檔、數(shù)據(jù)文件整合為單個文件
- 文件歸檔、匯總導(dǎo)出操作
- 初學(xué)者鍛煉文件操作能力的實戰(zhàn)案例
涉及知識點
- 遍歷目錄讀取所有
.txt文件 - 使用
bufio、os進行文件讀取與寫入 - 文件拼接的順序與內(nèi)容處理
示例文件結(jié)構(gòu)(同一目錄下)
data/
├── part1.txt
├── part2.txt
└── part3.txt
示例代碼:合并文本文件
package main
import (
"bufio"
"fmt"
"io"
"os"
"path/filepath"
)
func main() {
inputDir := "./data" // 輸入目錄
outputFile := "merged_output.txt" // 輸出文件名
// 創(chuàng)建輸出文件
out, err := os.Create(outputFile)
if err != nil {
fmt.Println("創(chuàng)建輸出文件失敗:", err)
return
}
defer out.Close()
// 遍歷目錄下所有 .txt 文件
err = filepath.Walk(inputDir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
// 只處理 .txt 文件
if !info.IsDir() && filepath.Ext(path) == ".txt" {
fmt.Println("正在合并文件:", path)
err := appendFileContent(path, out)
if err != nil {
fmt.Println("合并失敗:", err)
}
}
return nil
})
if err != nil {
fmt.Println("遍歷目錄出錯:", err)
return
}
fmt.Println("所有文件合并完成,輸出為:", outputFile)
}
// 將單個文件內(nèi)容追加到輸出文件
func appendFileContent(filePath string, out *os.File) error {
in, err := os.Open(filePath)
if err != nil {
return err
}
defer in.Close()
reader := bufio.NewReader(in)
_, err = io.Copy(out, reader)
if err != nil {
return err
}
// 每個文件內(nèi)容后加換行分隔
_, err = out.WriteString("\n")
return err
}
合并結(jié)果(merged_output.txt)
內(nèi)容會按照文件遍歷順序依次寫入,內(nèi)容中間自動添加換行分隔。例如:
[part1.txt 內(nèi)容]
...
[part2.txt 內(nèi)容]
...
[part3.txt 內(nèi)容]
技術(shù)說明
| 功能 | 使用 |
|---|---|
| 遍歷目錄 | filepath.Walk |
| 打開文件 | os.Open, os.Create |
| 讀取寫入 | bufio.NewReader, io.Copy |
| 判斷文件類型 | info.IsDir(), filepath.Ext() |
可選優(yōu)化方向
對文件名排序后再合并
跳過空文件或大小為 0 的文件
每段前添加注釋 // 文件名:xxx.txt
增加合并進度提示或統(tǒng)計信息
小結(jié)
該案例通過完整示例演示了如何使用 Go 語言合并多個文本文件,幫助你熟練掌握文件遍歷、讀取、寫入、擴展處理等實用技能,是文件處理場景的常見需求。
到此這篇關(guān)于Go語言實現(xiàn)多文本文件合并的示例代碼的文章就介紹到這了,更多相關(guān)Go文件合并內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang通過反射手動實現(xiàn)json序列化的方法
在 Go 語言中,JSON 序列化和反序列化通常通過標準庫 encoding/json 來實現(xiàn),本文給大家介紹golang 通過反射手動實現(xiàn)json序列化的方法,感興趣的朋友一起看看吧2024-12-12
Go語言RPC Authorization進行簡單ip安全驗證的方法
這篇文章主要介紹了Go語言RPC Authorization進行簡單ip安全驗證的方法,實例分析了Go語言進行ip驗證的技巧,需要的朋友可以參考下2015-03-03
基于go實例網(wǎng)絡(luò)存儲協(xié)議詳解
這篇文章主要為大家介紹了基于go實例網(wǎng)絡(luò)存儲協(xié)議詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
go并發(fā)編程sync.Cond使用場景及實現(xiàn)原理
這篇文章主要為大家介紹了go并發(fā)編程sync.Cond使用場景及實現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08

