当前位置: 移动技术网 > IT编程>脚本编程>Go语言 > Go语言复制文件

Go语言复制文件

2018年12月20日  | 移动技术网IT编程  | 我要评论

需要使用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)
    }
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网