1 Star 0 Fork 0

工具/go-lib

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
filie_utils.go 3.02 KB
一键复制 编辑 原始数据 按行查看 历史
Roc 提交于 2021-11-01 11:23 +08:00 . update
package file_utils
import (
"errors"
"fmt"
"io"
"os"
"path/filepath"
"strings"
)
func Test(){
fmt.Println("hello git_lib test")
}
// CheckIfError should be used to naively panics if an error is not nil.
func CheckIfError(err error) bool {
if err == nil {
return false
}
fmt.Printf("\x1b[31;1m%s\x1b[0m\n", fmt.Sprintf("error: %s", err))
return true
}
func Info(format string, args ...interface{}) {
fmt.Printf("\x1b[34;1m%s\x1b[0m\n", fmt.Sprintf(format, args...))
}
// 创建文件夹
func MakeDir(dir string){
if IsExist(dir) == false{
os.Mkdir(dir, os.ModePerm)
}
}
// 递归创建文件夹
func MakeDirAll(dir string){
if IsExist(dir) == false{
os.MkdirAll(dir, os.ModePerm)
}
}
/**
* 拷贝文件夹,同时拷贝文件夹中的文件
* @param srcPath 需要拷贝的文件夹路径: D:/test
* @param destPath 拷贝到的位置: D:/backup/
*/
func CopyDir(srcPath string, destPath string) error {
if IsExist(destPath) == false{
os.Mkdir(destPath, os.ModePerm)
}
//检测目录正确性
if srcInfo, err := os.Stat(srcPath); err != nil {
fmt.Println(err.Error())
return err
} else {
if !srcInfo.IsDir() {
e := errors.New("srcPath不是一个正确的目录!")
fmt.Println(e.Error())
return e
}
}
if destInfo, err := os.Stat(destPath); err != nil {
fmt.Println(err.Error())
return err
} else {
if !destInfo.IsDir() {
e := errors.New("destInfo不是一个正确的目录!")
fmt.Println(e.Error())
return e
}
}
//加上拷贝时间:不用可以去掉
//destPath = destPath + "_" + time.Now().Format("20060102150405")
err := filepath.Walk(srcPath, func(path string, f os.FileInfo, err error) error {
if f == nil {
return err
}
if !f.IsDir() {
path := strings.Replace(path, "\\", "/", -1)
destNewPath := strings.Replace(path, srcPath, destPath, -1)
//fmt.Println("复制文件:" + path + " 到 " + destNewPath)
CopyFile(path, destNewPath)
}
return nil
})
if err != nil {
fmt.Printf(err.Error())
}
return err
}
//生成目录并拷贝文件
func CopyFile(src, dest string) (w int64, err error) {
srcFile, err := os.Open(src)
if err != nil {
fmt.Println(err.Error())
return
}
defer srcFile.Close()
//分割path目录
destSplitPathDirs := strings.Split(dest, "/")
//检测时候存在目录
destSplitPath := ""
for index, dir := range destSplitPathDirs {
if index < len(destSplitPathDirs)-1 {
destSplitPath = destSplitPath + dir + "/"
if IsExist(destSplitPath) == false {
//fmt.Println("创建目录:" + destSplitPath)
//创建目录
err := os.Mkdir(destSplitPath, os.ModePerm)
if err != nil {
fmt.Println(err)
}
}
}
}
dstFile, err := os.Create(dest)
if err != nil {
fmt.Println(err.Error())
return
}
defer dstFile.Close()
return io.Copy(dstFile, srcFile)
}
//检测文件夹路径时候存在
func IsExist(path string) bool {
_, err := os.Stat(path)
if err != nil{
if os.IsExist(err){
return true
}
if os.IsNotExist(err){
return false
}
fmt.Println(err)
return false
}
return true
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/roc_tools/go-lib.git
git@gitee.com:roc_tools/go-lib.git
roc_tools
go-lib
go-lib
9d39b26b175b

搜索帮助