文章目录
目录
- 案例目标
- 应用场景
- 涉及知识点
- 示例文件结构(同一目录下)
- 示例代码:合并文本文件
- 合并结果(merged_output.txt)
- 技术说明
- 可选优化方向
- 小结
使用 Go 语言将指定目录下的多个 .txt 文件,合并成一个新的总文件。
- 将多个日志、分段文档、数据文件整合为单个文件
- 文件归档、汇总导出操作
- 初学者锻炼文件操作能力的实战案例
- 遍历目录读取所有
.txt 文件
- 使用
bufio、os 进行文件读取与写入
- 文件拼接的顺序与内容处理
.txt 文件bufio、os 进行文件读取与写入
data/
├── part1.txt
├── part2.txt
└── part3.txt
data/
├── part1.txt
├── part2.txt
└── part3.txt
package main
import (
"bufio"
"fmt"
"io"
"os"
"path/filepath"
)
func main() {
inputDir := "./data" // 输入目录
outputFile := "merged_output.txt" // 输出文件名
// 创建输出文件
out, err := os.Create(outputFile)
if err != nil {
fmt.Println("创建输出文件失败:", 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)
}
// 将单个文件内容追加到输出文件
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
}
// 每个文件内容后加换行分隔
_, err = out.WriteString("n")
return err
}
内容会按照文件遍历顺序依次写入,内容中间自动添加换行分隔。例如:
[part1.txt 内容]
…
[part2.txt 内容]
…
[part3.txt 内容]
| 功能 | 使用 |
|---|---|
| 遍历目录 | filepath.Walk |
| 打开文件 | os.Open, os.Create |
| 读取写入 | bufio.NewReader, io.Copy |
| 判断文件类型 | info.IsDir(), filepath.Ext() |
对文件名排序后再合并
跳过空文件或大小为 0 的文件
每段前添加注释 // 文件名:xxx.txt
增加合并进度提示或统计信息
该案例通过完整示例演示了如何使用 Go 语言合并多个文本文件,帮助你熟练掌握文件遍历、读取、写入、扩展处理等实用技能,是文件处理场景的常见需求。
到此这篇关于Go语言实现多文本文件合并的示例代码的文章就介绍到这了,更多相关Go文件合并内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- Golang合并yaml文件过程逐步讲解
- Go来合并两个csv的实现示例
- 使用Go语言统计文件中每个字母出现频率的方法
- 利用Go语言遍历目录下所有文件的示例代码
- 使用Go语言实现读取本地文本文件内容