Go语言复制文件
程序员文章站
2022-04-15 13:41:43
需要使用io包的Copy方法 还可以使用下面的方法 ......
需要使用io包的copy方法
package main import ( "fmt" "io" "os" ) //自己编写一个函数,接收两个文件路径 srcfilename dstfilename func copyfile(dstfilename string, srcfilename string) (written int64, err error) { srcfile, err := os.open(srcfilename) if err != nil { fmt.printf("open file err = %v\n", err) return } defer srcfile.close() //打开dstfilename dstfile, err := os.openfile(dstfilename, os.o_wronly | os.o_create, 0755) if err != nil { fmt.printf("open file err = %v\n", err) return } defer dstfile.close() return io.copy(dstfile, srcfile) } func main() { result, err := copyfile("./src/main/dst.png", "./src/main/file.png") if err == nil { fmt.println("拷贝成功!,拷贝的字节数为: ", result) } }
还可以使用下面的方法
package main import ( "bufio" "fmt" "io" "os" ) //自己编写一个函数,接收两个文件路径 srcfilename dstfilename func copyfile(dstfilename string, srcfilename string) (written int64, err error) { srcfile, err := os.open(srcfilename) if err != nil { fmt.printf("open file err = %v\n", err) return } defer srcfile.close() //通过srcfile,获取到reader reader := bufio.newreader(srcfile) //打开dstfilename dstfile, err := os.openfile(dstfilename, os.o_wronly | os.o_create, 0666) if err != nil { fmt.printf("open file err = %v\n", err) return } writer := bufio.newwriter(dstfile) defer func() { writer.flush() //把缓冲区的内容写入到文件 dstfile.close() }() return io.copy(writer, reader) } func main() { result, err := copyfile("./src/main/dst.png", "./src/main/file.png") if err == nil { fmt.println("拷贝成功!拷贝的字节大写为: ", result) } }
上一篇: 面试题