Go语言实战案例-复制文件内容(go 语言 gui)

Go语言实战案例-复制文件内容(go 语言 gui)

本案例将实现一个实用的文件操作工具:将一个文件的内容完整复制到另一个文件中。这是文件处理中的常见任务,比如配置文件备份、日志迁移、用户上传文件转存等。

🛠 案例说明

我们将通过标准库 os 和 io 提供的函数:

  • • 读取用户输入的源文件路径和目标文件路径;
  • • 打开源文件;
  • • 创建目标文件;
  • • 使用 io.Copy 将源文件内容复制到目标文件中;
  • • 正确处理错误并关闭文件。

🔑 涉及知识点

  • • os.Open:打开已有文件(只读)
  • • os.Create:创建或清空目标文件
  • • defer:延迟关闭文件资源,防止泄漏
  • • io.Copy:高效完成内容复制
  • • 错误处理:判断 err != nil 保证程序健壮

✅ 示例代码packagemainimport("fmt""io""os")funcmain {varsourcestringvartargetstringfmt.Print("请输入源文件名:") fmt.Scanln(&source) fmt.Print("请输入目标文件名:") fmt.Scanln(&target) err := copyFile(source, target)iferr !=nil{ fmt.Println("复制失败:", err) }else{ fmt.Println("复制成功!") }}// copyFile 将 src 文件复制到 dst 文件funccopyFile(srcstring, dststring)error{// 打开源文件srcFile, err := os.Open(src)iferr !=nil{returnerr }defersrcFile.Close// 创建目标文件(如果已存在会被清空)dstFile, err := os.Create(dst)iferr !=nil{returnerr }deferdstFile.Close// 执行复制操作_, err = io.Copy(dstFile, srcFile)returnerr}

📎 代码解析

  • 行号
  • 说明
  • 1-3引入 fmt、io、os 标准库,用于输入输出和文件操作
  • 5-10提示用户输入两个文件路径(源文件和目标文件)
  • 12调用 copyFile 函数执行复制,处理返回的错误
  • 16-30copyFile 函数封装了完整的打开、创建和复制逻辑
  • 22-23使用 defer 确保无论复制是否成功,文件都能正确关闭
  • 28io.Copy 是高效的文件复制函数,自动处理缓冲和流读取

🧪 示例运行请输入源文件名:hello.txt请输入目标文件名:hello_copy.txt复制成功!

如果源文件不存在:

请输入源文件名:notfound.txt请输入目标文件名:copy.txt复制失败:open notfound.txt: no such file or directory

💡 练习扩展

  1. 1. 在复制前检查目标文件是否已存在,防止误覆盖(os.Stat 判断)
  2. 2. 改为使用命令行参数传入文件名,而非交互输入(os.Args)
  3. 3. 为大文件增加复制进度百分比(结合 bufio 和 Seek)
  4. 4. 支持批量复制多个文件(for 遍历多个路径)
  5. 5. 将复制日志写入日志文件(结合 log 包)

🧠 小结

这个案例展示了使用 Go 实现文件复制的完整流程,是掌握文件读写操作的关键案例之一。通过合理的错误处理和标准库的组合,你可以快速实现功能强大又可靠的文件工具程序。

猜你喜欢

不打比赛的陈梦太敢穿了,挂脖上衣搭半裙,迷人肩颈线条性感妩媚

那股子狠劲儿,仿佛每一球都带着必胜的杀气。 这两天,网上疯传的一组照片,直接让网友集体揉了揉眼睛——这真是陈梦? 这种不断突破边界、勇于尝试新风格的劲头,和她赛场上那股不服输、求变化的拼劲儿,莫名地一脉相承…

不打比赛的陈梦太敢穿了,挂脖上衣搭半裙,迷人肩颈线条性感妩媚

一路走好!43岁华人喜剧演员布海敏巴黎坠亡,生前曾谈心理问题

这一角色的成功,让布海敏在欧洲影视圈崭露头角,之后他还参演了电影《中国大战罗马帝国》,挑战了反派角色,一位讲着蹩脚拉丁语的东方商人,他的夸张肢体语言与精准的台词节奏,让整个角色充满了喜感,也让他进一步在电影圈…

一路走好!43岁华人喜剧演员布海敏巴黎坠亡,生前曾谈心理问题

张予曦镂空裸背长裙惊艳巴黎街头,柔美与力量并存!(张予曦穿泳装)

她通过长期健身和跳舞所塑造出的紧实肌肉线条,则在柔美裙装的衬托下,形成了一种“柔美与力量并存”的独特气质。此前,张予曦还曾穿汉服跳国风舞、露背旗袍亮相老佛爷快闪店,她的表现被赞为“民国大小姐”和“掌管国风的神…

张予曦镂空裸背长裙惊艳巴黎街头,柔美与力量并存!(张予曦穿泳装)

浪姐6总决赛团秀:侯佩岑团夺冠意料之中,吴宣仪李晟留遗憾(浪姐总决赛造型)

吴宣仪团高的高,老的老,这组成员确定后,不少人都不看好,如今这观众投票规律又不似以往的比赛了,越是后出场得票越高,《看我72变》要拿到高票怕是难了。主要是前面李晟团表现这么好都只拿到755票,而她们团平均年龄…

浪姐6总决赛团秀:侯佩岑团夺冠意料之中,吴宣仪李晟留遗憾(浪姐总决赛造型)

【黄金搭档】07:吕克·贝松与埃里克·塞拉(黄金搭档百科)

通过这些合作,埃里克·塞拉获得:法国凯撒奖最佳电影音乐提名(《碧海蓝天》《这个杀手不太冷》)、欧洲电影奖最佳作曲(《第五元素》)、BMI电影音乐奖(《圣女贞德》),其作品更入选美国电影学会"百年百大电影配…

【黄金搭档】07:吕克·贝松与埃里克·塞拉(黄金搭档百科)