go golang 复制整个文件夹 复制整个目录 复制文件

自己写爬虫时,遇到需要复制目录下的文件到其它地方

网上baidu google,找到的代码都是长长一大段,没必要,所以自己写了个Copy方法

支持整个文件夹复制,也支持单个文件复制

from :="E:/www/sns"

to :="E:/www/sns-copy/"

_ = Copy(from, to)


或是个文件,也可以复制

from :="E:/www/sns/1.mp3"

to :="E:/www/sns/2.mp3"

_ = Copy(from, to)

//复制整个文件夹或单个文件

func Copy(from, to string) error {

    f, e := os.Stat(from)

    if e != nil {

        return e

    }

    if f.IsDir() {

        //from是文件夹,那么定义to也是文件夹

        if list, e := ioutil.ReadDir(from); e == nil {

            for _, item := range list {

                if e = Copy(filepath.Join(from, item.Name()), filepath.Join(to, item.Name())); e != nil {

                    return e

                }

            }

        }

    } else {

    //from是文件,那么创建to的文件夹

    p := filepath.Dir(to)

    if _, e = os.Stat(p); e != nil {

        if e = os.MkdirAll(p, 0777); e != nil {

            return e

        }

    }

    //读取源文件

    file, e := os.Open(from)

    if e != nil {

        return e

    }

    defer file.Close()

    bufReader := bufio.NewReader(file)

    // 创建一个文件用于保存

    out, e := os.Create(to)

    if e != nil {

        return e

    }

    defer out.Close()

    // 然后将文件流和文件流对接起来

    _, e = io.Copy(out, bufReader)

    }

return e

}

你可能感兴趣的:(go golang 复制整个文件夹 复制整个目录 复制文件)