golang递归拷贝文件夹
func DirCopy(src string, dest string) error {
items, _ := ioutil.ReadDir(src)
for _, item := range items {
if !item.IsDir() {
cpoyFile2(path.Join(src, item.Name()), path.Join(dest, item.Name()))
continue
}
os.Mkdir(path.Join(dest, item.Name()), os.ModePerm)
fmap(path.Join(src, item.Name()), path.Join(dest, item.Name()))
}
return nil
}
func cpoyFile2(src, dest string) error {
srcFp, err := os.Open(src)
if err != nil {
return err
}
defer srcFp.Close()
dstFp, err := os.Create(dest)
if err != nil {
return err
}
defer dstFp.Close()
_, err = io.Copy(dstFp, srcFp)
return err
}
- 上面是支持跨平台的操作, 如果仅运行在unix平台, 可以通过exec调用
copy -r src dest