go语言-文件夹复制

来源:互联网 发布:手机淘宝店标制作教程 编辑:程序博客网 时间:2024/05/29 07:28

go语言-文件夹复制

package mainimport (//"flag""fmt""io""os""path/filepath""strings")func main() {//flag.Parse()//root := flag.Arg(0)//getFilelist("E:/STUDY")copyDir("E:\\STUDY", "E:\\abc")//w, err := CopyFile("E:/filecopy.go", "e:/test.go")//if err != nil {//fmt.Println(err.Error())//}//fmt.Println(w)}func copyDir(src string, dest string) {src_original := srcerr := filepath.Walk(src, func(src string, f os.FileInfo, err error) error {if f == nil {return err}if f.IsDir() {//fmt.Println(f.Name())//copyDir(f.Name(), dest+"/"+f.Name())} else {fmt.Println(src)fmt.Println(src_original)fmt.Println(dest)dest_new := strings.Replace(src, src_original, dest, -1)fmt.Println(dest_new)fmt.Println("CopyFile:" + src + " to " + dest_new)CopyFile(src, dest_new)}//println(path)return nil})if err != nil {fmt.Printf("filepath.Walk() returned %v\n", err)}}//egodic directoriesfunc getFilelist(path string) {err := filepath.Walk(path, func(path string, f os.FileInfo, err error) error {if f == nil {return err}if f.IsDir() {return nil}println(path)return nil})if err != nil {fmt.Printf("filepath.Walk() returned %v\n", err)}}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}//copy filefunc CopyFile(src, dst string) (w int64, err error) {srcFile, err := os.Open(src)if err != nil {fmt.Println(err.Error())return}defer srcFile.Close()fmt.Println("dst:" + dst)dst_slices := strings.Split(dst, "\\")dst_slices_len := len(dst_slices)dest_dir := ""for i := 0; i < dst_slices_len-1; i++ {dest_dir = dest_dir + dst_slices[i] + "\\"}//dest_dir := getParentDirectory(dst)fmt.Println("dest_dir:" + dest_dir)b, err := PathExists(dest_dir)if b == false {err := os.Mkdir(dest_dir, os.ModePerm) //在当前目录下生成md目录if err != nil {fmt.Println(err)}}dstFile, err := os.Create(dst)if err != nil {fmt.Println(err.Error())return}defer dstFile.Close()return io.Copy(dstFile, srcFile)}


0 0
原创粉丝点击