在golang 中,复制文件是比较容易的,直接操作"io/ioutil"包就可以了,但是复制文件夹就有点麻烦了,需要一层层检查是否存在这个文件夹,不存在就创建文件夹,

实例如下:

package copyimport ("fmt""io""io/ioutil""os""path"
)// File copies a single file from src to dst
func File(src, dst string) error {var err errorvar srcfd *os.Filevar dstfd *os.Filevar srcinfo os.FileInfoif srcfd, err = os.Open(src); err != nil {return err}defer srcfd.Close()if dstfd, err = os.Create(dst); err != nil {return err}defer dstfd.Close()if _, err = io.Copy(dstfd, srcfd); err != nil {return err}if srcinfo, err = os.Stat(src); err != nil {return err}return os.Chmod(dst, srcinfo.Mode())
}// Dir copies a whole directory recursively
func Dir(src string, dst string) error {var err errorvar fds []os.FileInfovar srcinfo os.FileInfoif srcinfo, err = os.Stat(src); err != nil {return err}if err = os.MkdirAll(dst, srcinfo.Mode()); err != nil {return err}if fds, err = ioutil.ReadDir(src); err != nil {return err}for _, fd := range fds {srcfp := path.Join(src, fd.Name())dstfp := path.Join(dst, fd.Name())if fd.IsDir() {if err = Dir(srcfp, dstfp); err != nil {fmt.Println(err)}} else {if err = File(srcfp, dstfp); err != nil {fmt.Println(err)}}}return nil
}

golang 复制 文件 文件夹相关推荐

  1. Golang复制文件夹同时复制文件

    请注明出处:https://blog.csdn.net/qq_23179075/article/details/83347698 Golang 复制文件夹,包括文件夹中的文件 /*** 拷贝文件夹,同 ...

  2. golang 文件 文件夹 创建 读取 移动 复制 写入 遍历

    目录 文件读取 创建 写入 移动 拷贝 删除 文件 创建文件夹 文件覆盖判断 遍历文件夹 权限 文件操作, 大体分为两部分: os库 : 文件\文件夹创建,读取,移动,复制 io库 : 文件内容的写入 ...

  3. python读取、写入、移动、复制文件(夹)以及其他关于文件(夹)的操作

    文章目录 基础操作 判断文件或者目录是否存在 创建目录 连接两个路径成为一个路径 读取文件 写入文件 移动文件(夹) 复制文件(夹) 突然发现,经常需要进行文件操作,因为如果程序运行时间很长,我们需要 ...

  4. C++学习之:复制和粘贴文件/文件夹

    从剪贴板上获得要复制/剪贴的文件路径之后,如何完成文件/文件夹的粘贴呢.下面列出了两个函数用来完成这些功能 //复制的粘贴 DWORD VrvCopyFile( LPCWSTR lpSrc, LPCW ...

  5. php递归复制文件内容,PHP实现递归复制整个文件夹的类实例_php技巧

    本文实例讲述了PHP实现递归复制整个文件夹的类.分享给大家供大家参考.具体如下: CreateFolder($toFile); $folder1=opendir($fromFile); while($ ...

  6. 怎么复制远程服务器上的文件夹,Linux系统复制文件/文件夹到远程服务器

    从一个服务器复制文件到另一个服务器,或者从本地到远程复制是 Linux 管理员的日常任务之一. 我觉得不会有人不同意,因为无论在哪里这都是你的日常操作之一.有很多办法都能处理这个任务,我们试着加以概括 ...

  7. 复制一个文件夹中的所有文件和文件夹的java程序实现

    使用java程序实现了对文件夹的复制功能: package demo.io; import java.io.BufferedInputStream; import java.io.BufferedOu ...

  8. php复制整个文件夹,PHP实现递归复制整个文件夹的类实例

    本文实例讲述了PHP实现递归复制整个文件夹的类.分享给大家供大家参考.具体如下: /* * 文件夹复制类 */ class CopyFile { public $fromFile; public $t ...

  9. ftp服务器复制粘贴文件夹,ftp服务器复制粘贴文件夹

    ftp服务器复制粘贴文件夹 内容精选 换一换 下载地址:https://varnish-cache.org/_downloads/varnish-6.2.0.tgz若服务器可以访问网络,则可以直接在服 ...

  10. linux复制目录命令夹,linux复制目录(文件夹)和打包命令

    linux复制目录(文件夹)和打包命令 复制目录命令: cp 需要复制的目录 -r 目的目录 (注意带参数-r) 压缩文件:zip -r 压缩后文件名 需要压缩的目录 喎?http://www.Bkj ...

最新文章

  1. Java读取property配置文件
  2. 网络切片,切开5G万亿级市场“大面包”
  3. 图论 —— 图的遍历
  4. go编译go-gtk报错
  5. java 共享session_java session共享
  6. 复习Javascript专题(三):面向对象(对象的创建与继承,原型及原型链)
  7. IE6下绝对定位层不显示
  8. 几款经典css框架下载
  9. VC6.0 2 VC2008 移植 中多字节字符集和Unicode之间的互换
  10. 组态服务器和客户端是啥协议,组态王服务器和客户端区别
  11. 苹果id退出后数据还在吗_【保留数据修复】升级iOS 14后,出现白苹果的修复方法!...
  12. extjs3.0与extjs4.0区别
  13. 做一名配音演员是什么样的体验?(嘉宾:孟祥龙)
  14. 人民日报聚焦绿之韵,树立民族品牌文化之魂
  15. 尤雨溪:重头来过的 Vue3 带来了什么?
  16. 专题二:浅谈社交行业如何有效反欺诈
  17. HEVC官方软件HM源代码简单分析-解码器TAppDecoder
  18. BeanCurrentlyInCreationException异常分析及解决
  19. 《Linux/Unix设计思想》读书笔记与感想
  20. Batch Normalization解析

热门文章

  1. Linux Kernel TCP/IP Stack — L2 Layer — Linux VLAN device for 802.1.q(虚拟局域网)
  2. 架构师之路 — API 经济 — 权限管理系统(分权分域设计)
  3. 用 C 语言开发一门编程语言 — 字符串与文件加载
  4. Linux_RAID
  5. 从PCB焊接角度谈画PCB图时应注意的问题
  6. linux终端出现bash: setup.bash: No such file or directory,和.bashrc文件的问题
  7. Java vs Big data 哪种编程语言更好?
  8. 电商啥职位最赚钱?投资薪资最高,客服垫底
  9. Unity3D 关于声音MissingComponentException报错
  10. [转]Erlang 大量写入出警报