// Copy 制整个文件夹或单个文件 func Copy(from, to string) error { f, e := os.Stat(from) if e != nil { fmt.Println("没有找到要拷贝的路径:", from) return e } if f.IsDir() { //from是文件夹,那么定义to也是文件夹 if list, e := os.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 } // Move 制整个文件夹或单个文件 func Move(from, to string) error { err := Copy(from, to) if err == nil { err1 := os.RemoveAll(from) if err1 != nil { fmt.Println("复制完成,删除失败") return err1 } else { fmt.Println("@OK移动成功:", from, " => ", to) } } else { fmt.Println("*Error移动失败:", from, " => ", to) } return err }
Golang Copy 制整个文件夹或单个文件; //Move 文件
发布时间 2023-06-15 16:35:59作者: tommickey