12.3 文件拷贝

如何拷贝一个文件到另一个文件?最简单的方式就是使用 io 包:

示例 12.10 filecopy.go

  1. // filecopy.go
  2. package main
  3. import (
  4. "fmt"
  5. "io"
  6. "os"
  7. )
  8. func main() {
  9. CopyFile("target.txt", "source.txt")
  10. fmt.Println("Copy done!")
  11. }
  12. func CopyFile(dstName, srcName string) (written int64, err error) {
  13. src, err := os.Open(srcName)
  14. if err != nil {
  15. return
  16. }
  17. defer src.Close()
  18. dst, err := os.Create(dstName)
  19. if err != nil {
  20. return
  21. }
  22. defer dst.Close()
  23. return io.Copy(dst, src)
  24. }

注意 defer 的使用:当打开 dst 文件时发生了错误,那么 defer 仍然能够确保 src.Close() 执行。如果不这么做,src 文件会一直保持打开状态并占用资源。

链接