Golang实现文件拷贝功能

aside section ._1OhGeD · · 1749 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

今天学习了使用golang实现一个简单的文件拷贝功能, 可以拷贝一个文件,图片,视频或者音频,分享给正在学习go语言的朋友...

实现从E盘拷贝一个pdf 到 e:/Go/tools/目录下面
文件大小:25.5 M
srcFile := "e:/copyFileTest02.pdf" -- 源文件路径
dstFile := "e:/Go/tools/copyFileTest02.pdf" -- 目标文件路径

知识点总结

1, 使用了带缓存的 bufio.NewReader(srcFile) 和 bufio.NewWriter(dstFile),一边读一边写,这样支持拷贝较大的文件;
2,defer dstFile.Close() 切记使用defer 来关闭打开的文件,避免内存泄漏;
3,自己成功测试了copy一个word文件和pdf文件。

源代码参考

package main

import (
    "bufio"
    "fmt"
    "io"
    "os"
)

// 编写一个函数,接收两个文件路径:
func copyFile(dstFileName string, srcFileName string) (written int64, err error) {
    srcFile, err := os.Open(srcFileName)
    if err != nil {
        fmt.Printf("open file error = %v\n", err)
    }
    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 error = %v\n", err)
        return
    }

    //通过dstFile,获取到WRITER
    writer := bufio.NewWriter(dstFile)
    //writer.Flush()

    defer dstFile.Close()

    return io.Copy(writer, reader)
}


func main() {
    //调用copyFile完成文件拷贝
    srcFile := "e:/copyFileTest02.pdf"
    dstFile := "e:/Go/tools/copyFileTest02.pdf"

    _, err := copyFile(dstFile, srcFile)
    if err == nil {
        fmt.Println("拷贝文件正常...")
    } else {
        fmt.Printf("拷贝文件出错了... err =%v\n", err)
    }
}

备注说明

本文部分内容,图片,及视频来源于网络转载, 不以盈利为目的,不构成商业目的使用, 仅用于学习交流...相关版权归原作者所有。如有异议,请联系我 751749090@qq.com [麦特matt]
将在第一时间作出处理.


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:aside section ._1OhGeD

查看原文:Golang实现文件拷贝功能

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1749 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传