Go语言实现多文本文件合并的示例代码

 更新时间:2025年07月24日 08:23:40   作者:程序员爱钓鱼  
这篇文章主要为大家详细介绍了使用Go语言实现多文本文件合并的相关知识,适用于初学者学习文件读取与写入的综合运用,有需要的小伙伴可以了解下

案例目标

使用 Go 语言将指定目录下的多个 .txt 文件,合并成一个新的总文件。

应用场景

  • 将多个日志、分段文档、数据文件整合为单个文件
  • 文件归档、汇总导出操作
  • 初学者锻炼文件操作能力的实战案例

涉及知识点

  • 遍历目录读取所有 .txt 文件
  • 使用 bufioos 进行文件读取与写入
  • 文件拼接的顺序与内容处理

示例文件结构(同一目录下)

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
}

合并结果(merged_output.txt)

内容会按照文件遍历顺序依次写入,内容中间自动添加换行分隔。例如:

[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通过反射手动实现json序列化的方法

    golang通过反射手动实现json序列化的方法

    在 Go 语言中,JSON 序列化和反序列化通常通过标准库 encoding/json 来实现,本文给大家介绍golang  通过反射手动实现json序列化的方法,感兴趣的朋友一起看看吧
    2024-12-12
  • Go语言学习技巧之命名规范

    Go语言学习技巧之命名规范

    最近在学习go语言,发现了不少需要整理的知识点,所以整理下分享出来,下面这篇文章主要给大家介绍了关于Go语言学习技巧之命名规范的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-12-12
  • Go 为什么不支持可重入锁原理解析

    Go 为什么不支持可重入锁原理解析

    这篇文章主要为大家介绍了Go 为什么不支持可重入锁原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Go语言RPC Authorization进行简单ip安全验证的方法

    Go语言RPC Authorization进行简单ip安全验证的方法

    这篇文章主要介绍了Go语言RPC Authorization进行简单ip安全验证的方法,实例分析了Go语言进行ip验证的技巧,需要的朋友可以参考下
    2015-03-03
  • 基于go实例网络存储协议详解

    基于go实例网络存储协议详解

    这篇文章主要为大家介绍了基于go实例网络存储协议详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • golang指数运算操作

    golang指数运算操作

    这篇文章主要介绍了golang指数运算操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Golang 如何解析和生成json

    Golang 如何解析和生成json

    这篇文章主要介绍了Golang 如何解析和生成json,帮助大家更好的理解和学习golang,感兴趣的朋友可以了解下
    2020-09-09
  • go并发编程sync.Cond使用场景及实现原理

    go并发编程sync.Cond使用场景及实现原理

    这篇文章主要为大家介绍了go并发编程sync.Cond使用场景及实现原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 使用Golang获取音视频时长信息的示例代码

    使用Golang获取音视频时长信息的示例代码

    这篇文章主要介绍了如何使用Golang获取音视频时长信息,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • Hugo 游乐场内容初始化示例详解

    Hugo 游乐场内容初始化示例详解

    这篇文章主要为大家介绍了Hugo 游乐场内容初始化示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论