请注明出处:https://blog.csdn.net/qq_23179075/article/details/83347698

Golang 复制文件夹,包括文件夹中的文件

/*** 拷贝文件夹,同时拷贝文件夹中的文件* @param srcPath          需要拷贝的文件夹路径: D:/test* @param destPath       拷贝到的位置: D:/backup/*/
func CopyDir(srcPath string, destPath string) error {//检测目录正确性if srcInfo, err := os.Stat(srcPath); err != nil {fmt.Println(err.Error())return err} else {if !srcInfo.IsDir() {e := errors.New("srcPath不是一个正确的目录!")fmt.Println(e.Error())return e}}if destInfo, err := os.Stat(destPath); err != nil {fmt.Println(err.Error())return err} else {if !destInfo.IsDir() {e := errors.New("destInfo不是一个正确的目录!")fmt.Println(e.Error())return e}}//加上拷贝时间:不用可以去掉destPath = destPath + "_" + time.Now().Format("20060102150405")err := filepath.Walk(srcPath, func(path string, f os.FileInfo, err error) error {if f == nil {return err}if !f.IsDir() {path := strings.Replace(path, "\\", "/", -1)destNewPath := strings.Replace(path, srcPath, destPath, -1)fmt.Println("复制文件:" + path + " 到 " + destNewPath)copyFile(path, destNewPath)}return nil})if err != nil {fmt.Printf(err.Error())}return err
}//生成目录并拷贝文件
func copyFile(src, dest string) (w int64, err error) {srcFile, err := os.Open(src)if err != nil {fmt.Println(err.Error())return}defer srcFile.Close()//分割path目录destSplitPathDirs := strings.Split(dest, "/")//检测时候存在目录destSplitPath := ""for index, dir := range destSplitPathDirs {if index < len(destSplitPathDirs)-1 {destSplitPath = destSplitPath + dir + "/"b, _ := pathExists(destSplitPath)if b == false {fmt.Println("创建目录:" + destSplitPath)//创建目录err := os.Mkdir(destSplitPath, os.ModePerm)if err != nil {fmt.Println(err)}}}}dstFile, err := os.Create(dest)if err != nil {fmt.Println(err.Error())return}defer dstFile.Close()return io.Copy(dstFile, srcFile)
}//检测文件夹路径时候存在
func pathExists(path string) (bool, error) {_, err := os.Stat(path)if err == nil {return true, nil}if os.IsNotExist(err) {return false, nil}return false, err
}

Golang复制文件夹同时复制文件相关推荐

  1. 【Java文件操作(三)】递归复制文件夹内所有文件

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  2. android assets 文件夹 复制,Android 中 Assets目录下 文件或文件夹的复制

    1.文件或文件夹的复制 /* * 下面两个方法不是AsyncTask的接口 * * copyFileOrDir 目录复制 * copyFile 文件复制 */ private void copyFil ...

  3. ubuntu复制文件到另一个文件夹_简单介绍一下电脑中的文件或文件夹的复制、移动及删除的操作方式...

    大家好,我是波仔,今天又来跟各位学电脑基础的朋友们分享知识,让我们一起来学习吧. 复制文件或文件夹 在我们日常操作文件或文件夹的过程中,经常会遇到需要复制一些文件或文件夹什么的,下面我们就一起来分享一 ...

  4. Linux批量复制文件夹里的文件到另一个文件夹(问题:linux sh: /bin/cp: Argument list too long )

    cp -Rf 原文件夹路径 目标文件夹路径 例子: cp -Rf /home/src/* /home/tar/ 原文件夹路径:/home/src/* (加上 * 表示 /home/src/下的所有文件 ...

  5. python从文件夹中提取指定文件_使用Python实现从各个子文件夹中复制指定文件的方法...

    之前用来整理图片的小程序,拿来备忘,算是使用Python复制文件的一个例子. # -*- coding: utf-8 -*- #程序用来拷贝文件并输出图片采集日期等其他信息到Excel中 #文件夹结构 ...

  6. ubuntu复制文件到另一个文件夹_Excel VBA之FSO-2.2文件夹的复制

    Excel VBA之FSO-2.2文件夹的复制 前景提要 昨天我们首次接触了ADO中FSO的使用,并演示了如何通过FSO来创建一个文件夹,删除文件夹以及判断文件夹是否存在的操作,虽然还是再说文件夹,但 ...

  7. 打开文件管理器并进行文件夹的复制、移动、删除、创建

    打开文件管理器并进行文件夹的复制.移动.删除.创建 调文件文件管理器并获取可操作文件的DocumentFile Intent intent = new Intent(Intent.ACTION_OPE ...

  8. python 遍历,删除,复制文件夹下所有文件

    import osdef files_and_dirs_list(dir_path):"""遍历文件夹及文件夹下所有文件(包括文件夹):param dir_path: 文 ...

  9. 计算机窗口中如何移动文件,简单介绍一下电脑中的文件或文件夹的复制、移动及删除的操作方式...

    大家好,我是波仔,今天又来跟各位学电脑基础的朋友们分享知识,让我们一起来学习吧. 复制文件或文件夹 在我们日常操作文件或文件夹的过程中,经常会遇到需要复制一些文件或文件夹什么的,下面我们就一起来分享一 ...

最新文章

  1. Python培训教程分享:Python异常机制
  2. java隐藏控件_Android控件的显示和隐藏
  3. JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue .
  4. php直接修改excel,php如何修改excel
  5. 因为这两天比较忙,所以没有及时把要发表的东西写来.废话少说:我前面把两个简单的滚动说了下.接下来介绍第三种集合循环滚动....
  6. 关于Office中对%20的转义问题,请知道的大侠帮忙一起想想招儿!
  7. NTU课程笔记 MAS714(2) Big-O notations
  8. VS2013报错:错误:没有与这些操作匹配的《运算符
  9. PHP笔记-自定义MVC框架
  10. Windows修改hosts
  11. 有效值/峰-峰值/幅值/瞬时值
  12. Python的学习笔记案例4--52周存钱挑战5.0
  13. 中国石油大学《微观经济学》在线考试
  14. PC817做IO输出使用方法
  15. 马士兵学习笔记-Java基础网络编程
  16. python数值类型有哪四个直辖市_博文分类
  17. MPAndroidChart使用(个人笔记)
  18. AppStore搜索不到已上架应用问题
  19. 微信界面Android开发
  20. Burpsuite抓包工具

热门文章

  1. Pyhon Openpyxl统计多个excel中所有的行数
  2. windows线程之CreateThread与_beginthreadex区别详解
  3. navicat导入sql文件(超简单)
  4. 『金融帝国实验室』(Capitalism Lab)品牌如何运作(官方指导)
  5. VC中的RegisterHotKey函数与HotKey控件(CHotKeyCtrl)
  6. word文档太大如何压缩变小?今天分享3个压缩方法
  7. 香港虚拟银行牌照正式落地,众安、京东数科、携程金融首批入局,五位空缺待定...
  8. 绘图制作java程序设计_系列效果图手绘加软件绘图
  9. Ubuntu 获取 root 权限 (临时永久)
  10. Python编码规范(下)