经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Go语言 » 查看文章
Go语言复制文件
来源:cnblogs  作者:itbsl  时间:2018/12/19 9:07:45  对本文有异议

需要使用io包的Copy方法

  1. package main
  2. import (
  3. "fmt"
  4. "io"
  5. "os"
  6. )
  7. //自己编写一个函数,接收两个文件路径 srcFileName dstFileName
  8. func CopyFile(dstFileName string, srcFileName string) (written int64, err error) {
  9. srcFile, err := os.Open(srcFileName)
  10. if err != nil {
  11. fmt.Printf("open file err = %v\n", err)
  12. return
  13. }
  14. defer srcFile.Close()
  15. //打开dstFileName
  16. dstFile, err := os.OpenFile(dstFileName, os.O_WRONLY | os.O_CREATE, 0755)
  17. if err != nil {
  18. fmt.Printf("open file err = %v\n", err)
  19. return
  20. }
  21. defer dstFile.Close()
  22. return io.Copy(dstFile, srcFile)
  23. }
  24. func main() {
  25. result, err := CopyFile("./src/main/dst.png", "./src/main/file.png")
  26. if err == nil {
  27. fmt.Println("拷贝成功!,拷贝的字节数为: ", result)
  28. }
  29. }

还可以使用下面的方法

  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "io"
  6. "os"
  7. )
  8. //自己编写一个函数,接收两个文件路径 srcFileName dstFileName
  9. func CopyFile(dstFileName string, srcFileName string) (written int64, err error) {
  10. srcFile, err := os.Open(srcFileName)
  11. if err != nil {
  12. fmt.Printf("open file err = %v\n", err)
  13. return
  14. }
  15. defer srcFile.Close()
  16. //通过srcFile,获取到Reader
  17. reader := bufio.NewReader(srcFile)
  18. //打开dstFileName
  19. dstFile, err := os.OpenFile(dstFileName, os.O_WRONLY | os.O_CREATE, 0666)
  20. if err != nil {
  21. fmt.Printf("open file err = %v\n", err)
  22. return
  23. }
  24. writer := bufio.NewWriter(dstFile)
  25. defer func() {
  26. writer.Flush() //把缓冲区的内容写入到文件
  27. dstFile.Close()
  28. }()
  29. return io.Copy(writer, reader)
  30. }
  31. func main() {
  32. result, err := CopyFile("./src/main/dst.png", "./src/main/file.png")
  33. if err == nil {
  34. fmt.Println("拷贝成功!拷贝的字节大写为: ", result)
  35. }
  36. }
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号