From d091e4e5eecc3c62d39579bc6ada9621c54c0253 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Thu, 26 May 2022 18:00:52 +0800 Subject: [PATCH] - init --- .drone.yml | 17 +++++++ .gitignore | 9 ++++ go.mod | 3 ++ gofiles.go | 127 ++++++++++++++++++++++++++++++++++++++++++++++++ version.go | 3 ++ version_test.go | 7 +++ 6 files changed, 166 insertions(+) create mode 100644 .drone.yml create mode 100644 .gitignore create mode 100644 go.mod create mode 100644 gofiles.go create mode 100644 version.go create mode 100644 version_test.go diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..c56c479 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,17 @@ +kind: pipeline +type: docker +name: clone + +steps: + - name: Test + image: golang:1.18 + commands: + - go env -w GO111MODULE=on + - go env -w GOPROXY=https://goproxy.cn,direct + - go test -v ./... + - name: Benchmark + image: golang:1.18 + commands: + - go env -w GO111MODULE=on + - go env -w GOPROXY=https://goproxy.cn,direct + - go test -bench=. -benchmem \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4794692 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +.env +.git +.svn +.idea +.vscode +*.log +goinit.sh +gomod.sh +/vendor/ \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..8d60b3c --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module go.dtapp.net/gofiles + +go 1.18 diff --git a/gofiles.go b/gofiles.go new file mode 100644 index 0000000..c07563b --- /dev/null +++ b/gofiles.go @@ -0,0 +1,127 @@ +package gofiles + +import ( + "fmt" + "log" + "math" + "os" +) + +// DeleteFile 删除文件 +func DeleteFile(pathName string) (bool, error) { + err := os.Remove(pathName) + if err != nil { + return false, err + } else { + return true, nil + } +} + +// DeletesFiles 删除文件夹 +func DeletesFiles(path string) (bool, error) { + err := os.RemoveAll(path) + if err != nil { + return false, err + } else { + return true, nil + } +} + +// ExistFile 判断文件是否存在 +func ExistFile(pathName string) (bool, error) { + fileInfo, err := os.Stat(pathName) + if os.IsNotExist(err) { + return false, nil + } + // 如果是0也算不存在 + if fileInfo.Size() == 0 { + return false, nil + } + if err == nil { + return true, nil + } + return false, err +} + +// ExistFiles 判断文件夹是否存在 +func ExistFiles(path string) (bool, error) { + _, err := os.Stat(path) + if err == nil { + return true, nil + } + if os.IsNotExist(err) { + return false, nil + } + return false, err +} + +// CreateFile 创建文件 +func CreateFile(fileName string) (bool, error) { + _, err := os.Create(fileName) + if err != nil { + return false, err + } else { + return true, nil + } +} + +// CreateFiles 创建文件夹 +func CreateFiles(path string, perm int) (bool, error) { + err := os.MkdirAll(path, os.FileMode(perm)) + if err != nil { + return false, err + } else { + return true, nil + } +} + +// DirExist 判断目录是否存在,存在返回 true +func DirExist(path string) (bool, error) { + _, err := os.Stat(path) + if err == nil { + return true, nil + } + if os.IsNotExist(err) { + return false, nil + } + return false, err +} + +// CreateDir 创建目录 +func CreateDir(path string) error { + dirExist, err := DirExist(path) + if err != nil { + return err + } + if !dirExist { + err := os.Mkdir(path, os.ModePerm) + if err != nil { + log.Printf("创建[%s]目录失败: %s\n", path, err) + } + } + return err +} + +func logn(n, b float64) float64 { + return math.Log(n) / math.Log(b) +} +func humanateBytes(s uint64, base float64, sizes []string) string { + if s < 10 { + return fmt.Sprintf("%dB", s) + } + e := math.Floor(logn(float64(s), base)) + suffix := sizes[int(e)] + val := float64(s) / math.Pow(base, math.Floor(e)) + f := "%.0f" + if val < 10 { + f = "%.1f" + } + + return fmt.Sprintf(f+"%s", val, suffix) +} + +// FileSize 计算文件大小并生成用户友好的字符串。 +func FileSize(s uint64) string { + sizes := []string{"B", "KB", "MB", "GB", "TB", "PB", "EB"} + return humanateBytes(uint64(s), 1024, sizes) +} diff --git a/version.go b/version.go new file mode 100644 index 0000000..44c2773 --- /dev/null +++ b/version.go @@ -0,0 +1,3 @@ +package gofiles + +const Version = "1.0.0" diff --git a/version_test.go b/version_test.go new file mode 100644 index 0000000..b4cd7cf --- /dev/null +++ b/version_test.go @@ -0,0 +1,7 @@ +package gofiles + +import "testing" + +func TestVersion(t *testing.T) { + t.Log(Version) +}