package utils import ( "io" "os" "path/filepath" ) // CopyFile 复制文件 func CopyFile(src, dst string) error { srcFile, err := os.Open(src) if err != nil { return err } defer srcFile.Close() // 确保目标目录存在 dstDir := filepath.Dir(dst) if err := os.MkdirAll(dstDir, os.ModePerm); err != nil { return err } dstFile, err := os.Create(dst) if err != nil { return err } defer dstFile.Close() _, err = io.Copy(dstFile, srcFile) return err } // CopyDir 复制目录 func CopyDir(src, dst string) error { srcInfo, err := os.Stat(src) if err != nil { return err } if err = os.MkdirAll(dst, srcInfo.Mode()); err != nil { return err } entries, err := os.ReadDir(src) if err != nil { return err } for _, entry := range entries { srcPath := filepath.Join(src, entry.Name()) dstPath := filepath.Join(dst, entry.Name()) if entry.IsDir() { if err = CopyDir(srcPath, dstPath); err != nil { return err } } else { if err = CopyFile(srcPath, dstPath); err != nil { return err } } } return nil } // RemoveFile 删除文件 func RemoveFile(path string) error { return os.Remove(path) } // RemoveDir 删除目录 func RemoveDir(path string) error { return os.RemoveAll(path) }