设为首页 加入收藏

TOP

Go语言复制文件
2018-12-18 18:08:59 】 浏览:139
Tags:语言 复制 文件

需要使用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)
    }
}
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇合并两个有序链表的golang实现 下一篇Go语言连接Oracle(就我这个最全)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目