使用Go语言实现文件的复制

发布时间:2026/10/10 1:16:59
使用Go语言实现文件的复制 这是程序的主体部分package main import ( bufio fmt io os ) func CopyFile(dstFileName string, srcFileName string) (written int64, err error) { srcfile, err : os.Open(srcFileName) if err ! nil { fmt.Printf(os.Open err%v\n, err) } defer srcfile.Close() reader : bufio.NewReader(srcfile) //打开srcFileName文件 dstfile, err : os.OpenFile(dstFileName, os.O_WRONLY|os.O_CREATE, 0666) if err ! nil { fmt.Printf(os.OpenFile err%v\n, err) return } writer : bufio.NewWriter(dstfile) defer dstfile.Close() return io.Copy(writer, reader) } func main() { ab, _ : CopyFile(D:/Users/zhang_jun/Desktop/hello.mp3, D:/Users/zhang_jun/Pictures/视频项目/秋天不回来.mp4) fmt.Println(ab) }运行结果录制_2024_04_27_15_04_14_8介绍 引入的几个包import ( bufio//缓存 fmt io os )文件复制的函数func CopyFile(dstFileName string, srcFileName string) (written int64, err error) { //dstFileNamesrcFileName分别代表文件的地址 //dstFileName复制的文件 //srcFileName被复制的文件 srcfile, err : os.Open(srcFileName) if err ! nil { fmt.Printf(os.Open err%v\n, err) } //defer后面的函数只有在当前函数执行完毕后才能执行通常用于释放资源这里用于文件的关闭 defer srcfile.Close() reader : bufio.NewReader(srcfile)//创建一个新的读取器带缓存 //打开dstFileName文件 dstfile, err : os.OpenFile(dstFileName, os.O_WRONLY|os.O_CREATE, 0666) //权限为O_WRONLY和O_CREATE,即是只写和创建 if err ! nil { fmt.Printf(os.OpenFile err%v\n, err) return } writer : bufio.NewWriter(dstfile) //bufio.NewWriter() 函数会将dstfile这个文件对象包装成一个带缓冲区的写入器。 defer dstfile.Close() //调用copy函数进行复制 //Copy()函数会从reader中读取数据并将数据写入到writer中直到读取到reader的末尾或发生错误为止。 return io.Copy(writer, reader)//io.Copy(writer, reader) }CopyFile返回文件的大小bit和error主函数func main() { ab, _ : CopyFile(D:/Users/zhang_jun/Desktop/hello.mp3, D:/Users/zhang_jun/Pictures/视频项目/秋天不回来.mp4) fmt.Println(ab) }附打开文件的的类型在Go语言中可以使用os.OpenFile()函数来打开文件并指定打开文件的方式和权限。以下是一些常用的打开文件方式的示例1. 以只读方式打开文件O_RDONLY2. 以只写方式打开文件O_WRONLY3. 以读写方式打开文件os.O_RDWR4. 如果文件不存在则创建文件并以读写方式打开O_CREATE|os.O_RDWR5. 追加方式打开文件O_APPEND|os.O_WRONLY在以上示例中os.OpenFile()函数的第二个参数用来指定打开文件的方式常用的参数有os.O_RDONLY只读、os.O_WRONLY只写、os.O_RDWR读写、os.O_CREATE如果文件不存在则创建、os.O_APPEND追加内容到文件末尾等。第三个参数是文件的权限通常使用八进制表示例如0644表示文件所有者有读写权限组用户和其他用户只有读权限。请注意在使用完文件后需要调用file.Close()方法关闭文件以释放资源。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询