From 1c794c040c3ca51dbddbe906060f82be66f7dcba Mon Sep 17 00:00:00 2001 From: huangzj Date: Mon, 13 Jul 2020 17:01:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(Go-Tool)=EF=BC=9A=20=E4=BF=AE=E6=94=B9File?= =?UTF-8?q?Util=E7=9A=84=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- err/FileError.go | 45 ----------------------- readme.md | 2 ++ util/file/FileReadTool.go | 22 ++++++------ util/file/FileUtil.go | 74 +++++++++++++++++++------------------- util/file/FileWriteTool.go | 11 +++--- 5 files changed, 55 insertions(+), 99 deletions(-) delete mode 100644 err/FileError.go diff --git a/err/FileError.go b/err/FileError.go deleted file mode 100644 index 234c94d..0000000 --- a/err/FileError.go +++ /dev/null @@ -1,45 +0,0 @@ -/* - * @Author : huangzj - * @Time : 2020/4/26 15:09 - * @Description: - */ - -package err - -type FileError struct { - Err error - Mes string -} - -func ENewFileError(err error) *FileError { - return &FileError{ - Err: err, - Mes: "", - } -} - -func NewFileError(mes string) *FileError { - return &FileError{ - Err: nil, - Mes: mes, - } -} - -func (e *FileError) Error() string { - if e == nil { - return "" - } - - if e.Err != nil { - return e.Err.Error() - } - - return e.Mes -} - -/* - * 默认Error方法直接返回Err信息,所以这边只需要加一个方法返回Mes就可以 - */ -func (e *FileError) ErrorMes() string { - return e.Mes -} diff --git a/readme.md b/readme.md index 6317a4e..f6539ed 100644 --- a/readme.md +++ b/readme.md @@ -28,6 +28,8 @@ 2020/7/13: 增加计算获取字符串哈希值的方法(这个是之前用于做分表系统的方法,搬到这边来看一下) +2020/7/13: 修改FileUtil的报错 + # mod vendor模式加载包 通过go mod的方式加载的github上面的包会有报红的问题,但是包本身是可以运行的,这样就是会有一个问题,如果你想要点击去看方法的内容,没办法做到 diff --git a/util/file/FileReadTool.go b/util/file/FileReadTool.go index a193af0..af166cc 100644 --- a/util/file/FileReadTool.go +++ b/util/file/FileReadTool.go @@ -7,9 +7,9 @@ package file import ( - err2 "Go-Tool/err" "bufio" "encoding/json" + "errors" "fmt" "io" "io/ioutil" @@ -22,18 +22,18 @@ import ( * @return FileError 报错信息 * @description 一次直接读取文件中的内容不进行中间处理 */ -func ReadInOnce(filePath string) (string, *err2.FileError) { +func ReadInOnce(filePath string) (string, error) { err, is, _ := IsFileExist(filePath) if err != nil { - return "", err2.ENewFileError(err) + return "", err } if !is { - return "", err2.NewFileError("非文件") + return "", errors.New("非文件") } fd, iErr := ioutil.ReadFile(filePath) if iErr != nil { - return "", err2.ENewFileError(iErr) + return "", iErr } return string(fd), nil @@ -45,11 +45,11 @@ func ReadInOnce(filePath string) (string, *err2.FileError) { * @return FileError 读取错误,如果没有错误返回nil * @description 通过for循环去读取文件,这边提供一种读取方式,通过这种方式来处理对应读取的操作 */ -func ReadByCircle(filePath string) (string, *err2.FileError) { +func ReadByCircle(filePath string) (string, error) { var fs string file, err := os.Open(filePath) if err != nil { - return "", err2.ENewFileError(err) + return "", err } defer file.Close() @@ -68,10 +68,10 @@ func ReadByCircle(filePath string) (string, *err2.FileError) { return fs, nil } -func ReadFileLineNum(filePath string) (int, *err2.FileError) { +func ReadFileLineNum(filePath string) (int, error) { file, err := os.Open(filePath) if err != nil { - return 0, err2.ENewFileError(err) + return 0, err } defer file.Close() @@ -88,10 +88,10 @@ func ReadFileLineNum(filePath string) (int, *err2.FileError) { return num, nil } -func ReadFileLineNumExceptEmptyLine(filePath string) (int, *err2.FileError) { +func ReadFileLineNumExceptEmptyLine(filePath string) (int, error) { file, err := os.Open(filePath) if err != nil { - return 0, err2.ENewFileError(err) + return 0, err } defer file.Close() diff --git a/util/file/FileUtil.go b/util/file/FileUtil.go index 8d51f83..7dcbf2f 100644 --- a/util/file/FileUtil.go +++ b/util/file/FileUtil.go @@ -19,7 +19,7 @@ package file import ( - err2 "Go-Tool/err" + "errors" "fmt" "io/ioutil" "os" @@ -32,28 +32,28 @@ import ( * @return os.FileInfo 返回FileInfo对象,如果没有的话返回nil * @description */ -func IsDirExist(path string) (*err2.FileError, bool, os.FileInfo) { +func IsDirExist(path string) (error, bool, os.FileInfo) { dir, err := os.Stat(path) //如果路仅错误直接返回错误 if err != nil { - return err2.ENewFileError(err), false, nil + return err, false, nil } //如果是文件夹直接返回 if dir.IsDir() { return nil, true, dir } - return err2.NewFileError("非文件夹"), false, nil + return errors.New("非文件夹"), false, nil } -func IsFileExist(path string) (*err2.FileError, bool, os.FileInfo) { +func IsFileExist(path string) (error, bool, os.FileInfo) { file, err := os.Stat(path) //如果路仅错误直接返回错误 if err != nil { - return err2.ENewFileError(err), false, nil + return err, false, nil } if file.IsDir() { - return err2.NewFileError("非文件"), false, nil + return errors.New("非文件"), false, nil } return nil, true, file @@ -66,19 +66,19 @@ func IsFileExist(path string) (*err2.FileError, bool, os.FileInfo) { * @return *File 返回文件对象,如果没有返回nil * @description 这边需要注意的是,在打开文件的时候,如果报错,分两种情况,一个是没权限,一个是文件有问题 */ -func HasReadPermission(filePath string) (*err2.FileError, bool, *os.File) { +func HasReadPermission(filePath string) (error, bool, *os.File) { eErr, exist, _ := IsFileExist(filePath) if eErr != nil || !exist { - return err2.ENewFileError(eErr), false, nil + return eErr, false, nil } file, err := os.OpenFile(filePath, os.O_RDONLY, 0666) if err != nil { //如果是没权限的错误返回 if os.IsPermission(err) { - return err2.ENewFileError(err), false, nil + return err, false, nil } //如果有权限但是发生错误的话,返回错误和有权限的标识 - return err2.ENewFileError(err), true, nil + return err, true, nil } return nil, true, file @@ -91,19 +91,19 @@ func HasReadPermission(filePath string) (*err2.FileError, bool, *os.File) { * @return *File 返回文件对象,如果没有返回nil * @description 这边需要注意的是,在打开文件的时候,如果报错,分两种情况,一个是没权限,一个是文件有问题 */ -func HasWritePermission(filePath string) (*err2.FileError, bool, *os.File) { +func HasWritePermission(filePath string) (error, bool, *os.File) { eErr, exist, _ := IsFileExist(filePath) if eErr != nil || !exist { - return err2.ENewFileError(eErr), false, nil + return eErr, false, nil } file, err := os.OpenFile(filePath, os.O_WRONLY, 0666) if err != nil { //如果是没权限的错误返回 if os.IsPermission(err) { - return err2.ENewFileError(err), false, nil + return err, false, nil } //如果有权限但是发生错误的话,返回错误和有权限的标识 - return err2.ENewFileError(err), true, nil + return err, true, nil } return nil, true, file @@ -116,7 +116,7 @@ func HasWritePermission(filePath string) (*err2.FileError, bool, *os.File) { * @return *File 返回文件对象,如果没有返回nil * @description 判断对文件是否有读写权限. */ -func HasReadWritePermission(filePath string) (*err2.FileError, bool, *os.File) { +func HasReadWritePermission(filePath string) (error, bool, *os.File) { rErr, hasR, rFile := HasReadPermission(filePath) wErr, hasW, _ := HasWritePermission(filePath) if hasR && hasW { @@ -124,10 +124,10 @@ func HasReadWritePermission(filePath string) (*err2.FileError, bool, *os.File) { } if rErr != nil { - return err2.ENewFileError(rErr), false, nil + return rErr, false, nil } - return err2.ENewFileError(wErr), false, nil + return wErr, false, nil } /* @@ -136,10 +136,10 @@ func HasReadWritePermission(filePath string) (*err2.FileError, bool, *os.File) { * @return File文件指针对象 * @description 创建文件,如果文件存在不进行覆盖 */ -func CreateFile(filePath string) (*err2.FileError, *os.File) { +func CreateFile(filePath string) (error, *os.File) { file, err := os.Create(filePath) if err != nil { - return err2.ENewFileError(err), nil + return err, nil } return nil, file } @@ -150,13 +150,13 @@ func CreateFile(filePath string) (*err2.FileError, *os.File) { * @return File文件指针对象 * @description 创建文件,如果文件存在进行覆盖 */ -func CreateOrCoverFile(filePath string) (*err2.FileError, *os.File) { +func CreateOrCoverFile(filePath string) (error, *os.File) { _, has, _ := IsFileExist(filePath) if has { rErr := os.Remove(filePath) if rErr != nil { - return err2.ENewFileError(rErr), nil + return rErr, nil } return CreateFile(filePath) } @@ -181,13 +181,13 @@ func GetAllFileNameFromDir(filePath string) []string { * @return 所有空文件夹数组 * @description 获取文件夹下面所有的空文件夹数组 */ -func GetAllEmptyDir(dir string) (*err2.FileError, []string) { +func GetAllEmptyDir(dir string) (error, []string) { err, is, _ := IsDirExist(dir) if err != nil { - return err2.ENewFileError(err), nil + return err, nil } if !is { - return err2.NewFileError("非文件夹"), nil + return errors.New("非文件夹"), nil } list := make([]string, 0) @@ -210,13 +210,13 @@ func GetAllEmptyDir(dir string) (*err2.FileError, []string) { /* * 获取所有非空文件夹的路径集合 */ -func GetAllNotEmptyDir(dir string) (*err2.FileError, []string) { +func GetAllNotEmptyDir(dir string) (error, []string) { err, is, _ := IsDirExist(dir) if err != nil { - return err2.ENewFileError(err), nil + return err, nil } if !is { - return err2.NewFileError("非文件夹"), nil + return errors.New("非文件夹"), nil } files := make([]string, 0) err1, aFiles := GetAllDir(dir) @@ -245,13 +245,13 @@ func GetAllNotEmptyDir(dir string) (*err2.FileError, []string) { /* * 获取目录下的所有文件夹路径集合 */ -func GetAllDir(dir string) (*err2.FileError, []string) { +func GetAllDir(dir string) (error, []string) { err, is, _ := IsDirExist(dir) if err != nil { - return err2.ENewFileError(err), nil + return err, nil } if !is { - return err2.NewFileError("非文件夹"), nil + return errors.New("非文件夹"), nil } return nil, getAllDir(dir) } @@ -261,13 +261,13 @@ func GetAllDir(dir string) (*err2.FileError, []string) { * @return * @description 删除文件夹下面所有的空文件夹 */ -func DeleteEmptyDir(filePath string) *err2.FileError { +func DeleteEmptyDir(filePath string) error { err, is, _ := IsDirExist(filePath) if err != nil { - return err2.ENewFileError(err) + return err } if !is { - return err2.NewFileError("非文件夹") + return errors.New("非文件夹") } //拿到所有的空文件夹 @@ -278,7 +278,7 @@ func DeleteEmptyDir(filePath string) *err2.FileError { for _, row := range emptyDirList { err := os.RemoveAll(row) if err != nil { - return err2.ENewFileError(err) + return err } } @@ -307,7 +307,7 @@ func getAllDir(dir string) []string { return dirList } -func isEmptyDir(dir string) (*err2.FileError, bool) { +func isEmptyDir(dir string) (error, bool) { _, err := ioutil.ReadDir(dir) if err != nil { panic(err) @@ -316,7 +316,7 @@ func isEmptyDir(dir string) (*err2.FileError, bool) { for _, f := range file { info, err := f.Stat() if err != nil { - return err2.ENewFileError(err), false + return err, false } if !info.IsDir() { return nil, false diff --git a/util/file/FileWriteTool.go b/util/file/FileWriteTool.go index ed42089..b5babf2 100644 --- a/util/file/FileWriteTool.go +++ b/util/file/FileWriteTool.go @@ -7,7 +7,6 @@ package file import ( - err2 "Go-Tool/err" "io/ioutil" "os" ) @@ -18,10 +17,10 @@ import ( * @return * @description */ -func WriteByIoUtil(filePath, content string) *err2.FileError { +func WriteByIoUtil(filePath, content string) error { err := ioutil.WriteFile(filePath, []byte(content), 0644) if err != nil { - return err2.ENewFileError(err) + return err } return nil } @@ -33,15 +32,15 @@ func WriteByIoUtil(filePath, content string) *err2.FileError { * @return File 文件对象,成功写入才会返回文件对象,否则是nil * @description */ -func WriteByFile(filePath, content string) (*err2.FileError, *os.File) { +func WriteByFile(filePath, content string) (error, *os.File) { fileObj, err := os.OpenFile(filePath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) if err != nil { - return err2.ENewFileError(err), nil + return err, nil } defer fileObj.Close() if _, err := fileObj.WriteString(content); err != nil { - return err2.ENewFileError(err), nil + return err, nil } return nil, fileObj