今天学习了使用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]
将在第一时间作出处理.
有疑问加站长微信联系(非本文作者)