feat(Go-Tool): 修改FileUtil的报错
This commit is contained in:
@@ -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 "<nil>"
|
|
||||||
}
|
|
||||||
|
|
||||||
if e.Err != nil {
|
|
||||||
return e.Err.Error()
|
|
||||||
}
|
|
||||||
|
|
||||||
return e.Mes
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 默认Error方法直接返回Err信息,所以这边只需要加一个方法返回Mes就可以
|
|
||||||
*/
|
|
||||||
func (e *FileError) ErrorMes() string {
|
|
||||||
return e.Mes
|
|
||||||
}
|
|
||||||
@@ -28,6 +28,8 @@
|
|||||||
|
|
||||||
2020/7/13: 增加计算获取字符串哈希值的方法(这个是之前用于做分表系统的方法,搬到这边来看一下)
|
2020/7/13: 增加计算获取字符串哈希值的方法(这个是之前用于做分表系统的方法,搬到这边来看一下)
|
||||||
|
|
||||||
|
2020/7/13: 修改FileUtil的报错
|
||||||
|
|
||||||
# mod vendor模式加载包
|
# mod vendor模式加载包
|
||||||
通过go mod的方式加载的github上面的包会有报红的问题,但是包本身是可以运行的,这样就是会有一个问题,如果你想要点击去看方法的内容,没办法做到
|
通过go mod的方式加载的github上面的包会有报红的问题,但是包本身是可以运行的,这样就是会有一个问题,如果你想要点击去看方法的内容,没办法做到
|
||||||
|
|
||||||
|
|||||||
+11
-11
@@ -7,9 +7,9 @@
|
|||||||
package file
|
package file
|
||||||
|
|
||||||
import (
|
import (
|
||||||
err2 "Go-Tool/err"
|
|
||||||
"bufio"
|
"bufio"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@@ -22,18 +22,18 @@ import (
|
|||||||
* @return FileError 报错信息
|
* @return FileError 报错信息
|
||||||
* @description 一次直接读取文件中的内容不进行中间处理
|
* @description 一次直接读取文件中的内容不进行中间处理
|
||||||
*/
|
*/
|
||||||
func ReadInOnce(filePath string) (string, *err2.FileError) {
|
func ReadInOnce(filePath string) (string, error) {
|
||||||
err, is, _ := IsFileExist(filePath)
|
err, is, _ := IsFileExist(filePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err2.ENewFileError(err)
|
return "", err
|
||||||
}
|
}
|
||||||
if !is {
|
if !is {
|
||||||
return "", err2.NewFileError("非文件")
|
return "", errors.New("非文件")
|
||||||
}
|
}
|
||||||
|
|
||||||
fd, iErr := ioutil.ReadFile(filePath)
|
fd, iErr := ioutil.ReadFile(filePath)
|
||||||
if iErr != nil {
|
if iErr != nil {
|
||||||
return "", err2.ENewFileError(iErr)
|
return "", iErr
|
||||||
}
|
}
|
||||||
|
|
||||||
return string(fd), nil
|
return string(fd), nil
|
||||||
@@ -45,11 +45,11 @@ func ReadInOnce(filePath string) (string, *err2.FileError) {
|
|||||||
* @return FileError 读取错误,如果没有错误返回nil
|
* @return FileError 读取错误,如果没有错误返回nil
|
||||||
* @description 通过for循环去读取文件,这边提供一种读取方式,通过这种方式来处理对应读取的操作
|
* @description 通过for循环去读取文件,这边提供一种读取方式,通过这种方式来处理对应读取的操作
|
||||||
*/
|
*/
|
||||||
func ReadByCircle(filePath string) (string, *err2.FileError) {
|
func ReadByCircle(filePath string) (string, error) {
|
||||||
var fs string
|
var fs string
|
||||||
file, err := os.Open(filePath)
|
file, err := os.Open(filePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err2.ENewFileError(err)
|
return "", err
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
@@ -68,10 +68,10 @@ func ReadByCircle(filePath string) (string, *err2.FileError) {
|
|||||||
return fs, nil
|
return fs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadFileLineNum(filePath string) (int, *err2.FileError) {
|
func ReadFileLineNum(filePath string) (int, error) {
|
||||||
file, err := os.Open(filePath)
|
file, err := os.Open(filePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err2.ENewFileError(err)
|
return 0, err
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
@@ -88,10 +88,10 @@ func ReadFileLineNum(filePath string) (int, *err2.FileError) {
|
|||||||
return num, nil
|
return num, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadFileLineNumExceptEmptyLine(filePath string) (int, *err2.FileError) {
|
func ReadFileLineNumExceptEmptyLine(filePath string) (int, error) {
|
||||||
file, err := os.Open(filePath)
|
file, err := os.Open(filePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err2.ENewFileError(err)
|
return 0, err
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
|
|||||||
+37
-37
@@ -19,7 +19,7 @@
|
|||||||
package file
|
package file
|
||||||
|
|
||||||
import (
|
import (
|
||||||
err2 "Go-Tool/err"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
@@ -32,28 +32,28 @@ import (
|
|||||||
* @return os.FileInfo 返回FileInfo对象,如果没有的话返回nil
|
* @return os.FileInfo 返回FileInfo对象,如果没有的话返回nil
|
||||||
* @description
|
* @description
|
||||||
*/
|
*/
|
||||||
func IsDirExist(path string) (*err2.FileError, bool, os.FileInfo) {
|
func IsDirExist(path string) (error, bool, os.FileInfo) {
|
||||||
dir, err := os.Stat(path)
|
dir, err := os.Stat(path)
|
||||||
//如果路仅错误直接返回错误
|
//如果路仅错误直接返回错误
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err2.ENewFileError(err), false, nil
|
return err, false, nil
|
||||||
}
|
}
|
||||||
//如果是文件夹直接返回
|
//如果是文件夹直接返回
|
||||||
if dir.IsDir() {
|
if dir.IsDir() {
|
||||||
return nil, true, dir
|
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)
|
file, err := os.Stat(path)
|
||||||
//如果路仅错误直接返回错误
|
//如果路仅错误直接返回错误
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err2.ENewFileError(err), false, nil
|
return err, false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if file.IsDir() {
|
if file.IsDir() {
|
||||||
return err2.NewFileError("非文件"), false, nil
|
return errors.New("非文件"), false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, true, file
|
return nil, true, file
|
||||||
@@ -66,19 +66,19 @@ func IsFileExist(path string) (*err2.FileError, bool, os.FileInfo) {
|
|||||||
* @return *File 返回文件对象,如果没有返回nil
|
* @return *File 返回文件对象,如果没有返回nil
|
||||||
* @description 这边需要注意的是,在打开文件的时候,如果报错,分两种情况,一个是没权限,一个是文件有问题
|
* @description 这边需要注意的是,在打开文件的时候,如果报错,分两种情况,一个是没权限,一个是文件有问题
|
||||||
*/
|
*/
|
||||||
func HasReadPermission(filePath string) (*err2.FileError, bool, *os.File) {
|
func HasReadPermission(filePath string) (error, bool, *os.File) {
|
||||||
eErr, exist, _ := IsFileExist(filePath)
|
eErr, exist, _ := IsFileExist(filePath)
|
||||||
if eErr != nil || !exist {
|
if eErr != nil || !exist {
|
||||||
return err2.ENewFileError(eErr), false, nil
|
return eErr, false, nil
|
||||||
}
|
}
|
||||||
file, err := os.OpenFile(filePath, os.O_RDONLY, 0666)
|
file, err := os.OpenFile(filePath, os.O_RDONLY, 0666)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
//如果是没权限的错误返回
|
//如果是没权限的错误返回
|
||||||
if os.IsPermission(err) {
|
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
|
return nil, true, file
|
||||||
@@ -91,19 +91,19 @@ func HasReadPermission(filePath string) (*err2.FileError, bool, *os.File) {
|
|||||||
* @return *File 返回文件对象,如果没有返回nil
|
* @return *File 返回文件对象,如果没有返回nil
|
||||||
* @description 这边需要注意的是,在打开文件的时候,如果报错,分两种情况,一个是没权限,一个是文件有问题
|
* @description 这边需要注意的是,在打开文件的时候,如果报错,分两种情况,一个是没权限,一个是文件有问题
|
||||||
*/
|
*/
|
||||||
func HasWritePermission(filePath string) (*err2.FileError, bool, *os.File) {
|
func HasWritePermission(filePath string) (error, bool, *os.File) {
|
||||||
eErr, exist, _ := IsFileExist(filePath)
|
eErr, exist, _ := IsFileExist(filePath)
|
||||||
if eErr != nil || !exist {
|
if eErr != nil || !exist {
|
||||||
return err2.ENewFileError(eErr), false, nil
|
return eErr, false, nil
|
||||||
}
|
}
|
||||||
file, err := os.OpenFile(filePath, os.O_WRONLY, 0666)
|
file, err := os.OpenFile(filePath, os.O_WRONLY, 0666)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
//如果是没权限的错误返回
|
//如果是没权限的错误返回
|
||||||
if os.IsPermission(err) {
|
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
|
return nil, true, file
|
||||||
@@ -116,7 +116,7 @@ func HasWritePermission(filePath string) (*err2.FileError, bool, *os.File) {
|
|||||||
* @return *File 返回文件对象,如果没有返回nil
|
* @return *File 返回文件对象,如果没有返回nil
|
||||||
* @description 判断对文件是否有读写权限.
|
* @description 判断对文件是否有读写权限.
|
||||||
*/
|
*/
|
||||||
func HasReadWritePermission(filePath string) (*err2.FileError, bool, *os.File) {
|
func HasReadWritePermission(filePath string) (error, bool, *os.File) {
|
||||||
rErr, hasR, rFile := HasReadPermission(filePath)
|
rErr, hasR, rFile := HasReadPermission(filePath)
|
||||||
wErr, hasW, _ := HasWritePermission(filePath)
|
wErr, hasW, _ := HasWritePermission(filePath)
|
||||||
if hasR && hasW {
|
if hasR && hasW {
|
||||||
@@ -124,10 +124,10 @@ func HasReadWritePermission(filePath string) (*err2.FileError, bool, *os.File) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if rErr != nil {
|
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文件指针对象
|
* @return File文件指针对象
|
||||||
* @description 创建文件,如果文件存在不进行覆盖
|
* @description 创建文件,如果文件存在不进行覆盖
|
||||||
*/
|
*/
|
||||||
func CreateFile(filePath string) (*err2.FileError, *os.File) {
|
func CreateFile(filePath string) (error, *os.File) {
|
||||||
file, err := os.Create(filePath)
|
file, err := os.Create(filePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err2.ENewFileError(err), nil
|
return err, nil
|
||||||
}
|
}
|
||||||
return nil, file
|
return nil, file
|
||||||
}
|
}
|
||||||
@@ -150,13 +150,13 @@ func CreateFile(filePath string) (*err2.FileError, *os.File) {
|
|||||||
* @return File文件指针对象
|
* @return File文件指针对象
|
||||||
* @description 创建文件,如果文件存在进行覆盖
|
* @description 创建文件,如果文件存在进行覆盖
|
||||||
*/
|
*/
|
||||||
func CreateOrCoverFile(filePath string) (*err2.FileError, *os.File) {
|
func CreateOrCoverFile(filePath string) (error, *os.File) {
|
||||||
_, has, _ := IsFileExist(filePath)
|
_, has, _ := IsFileExist(filePath)
|
||||||
|
|
||||||
if has {
|
if has {
|
||||||
rErr := os.Remove(filePath)
|
rErr := os.Remove(filePath)
|
||||||
if rErr != nil {
|
if rErr != nil {
|
||||||
return err2.ENewFileError(rErr), nil
|
return rErr, nil
|
||||||
}
|
}
|
||||||
return CreateFile(filePath)
|
return CreateFile(filePath)
|
||||||
}
|
}
|
||||||
@@ -181,13 +181,13 @@ func GetAllFileNameFromDir(filePath string) []string {
|
|||||||
* @return 所有空文件夹数组
|
* @return 所有空文件夹数组
|
||||||
* @description 获取文件夹下面所有的空文件夹数组
|
* @description 获取文件夹下面所有的空文件夹数组
|
||||||
*/
|
*/
|
||||||
func GetAllEmptyDir(dir string) (*err2.FileError, []string) {
|
func GetAllEmptyDir(dir string) (error, []string) {
|
||||||
err, is, _ := IsDirExist(dir)
|
err, is, _ := IsDirExist(dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err2.ENewFileError(err), nil
|
return err, nil
|
||||||
}
|
}
|
||||||
if !is {
|
if !is {
|
||||||
return err2.NewFileError("非文件夹"), nil
|
return errors.New("非文件夹"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
list := make([]string, 0)
|
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)
|
err, is, _ := IsDirExist(dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err2.ENewFileError(err), nil
|
return err, nil
|
||||||
}
|
}
|
||||||
if !is {
|
if !is {
|
||||||
return err2.NewFileError("非文件夹"), nil
|
return errors.New("非文件夹"), nil
|
||||||
}
|
}
|
||||||
files := make([]string, 0)
|
files := make([]string, 0)
|
||||||
err1, aFiles := GetAllDir(dir)
|
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)
|
err, is, _ := IsDirExist(dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err2.ENewFileError(err), nil
|
return err, nil
|
||||||
}
|
}
|
||||||
if !is {
|
if !is {
|
||||||
return err2.NewFileError("非文件夹"), nil
|
return errors.New("非文件夹"), nil
|
||||||
}
|
}
|
||||||
return nil, getAllDir(dir)
|
return nil, getAllDir(dir)
|
||||||
}
|
}
|
||||||
@@ -261,13 +261,13 @@ func GetAllDir(dir string) (*err2.FileError, []string) {
|
|||||||
* @return
|
* @return
|
||||||
* @description 删除文件夹下面所有的空文件夹
|
* @description 删除文件夹下面所有的空文件夹
|
||||||
*/
|
*/
|
||||||
func DeleteEmptyDir(filePath string) *err2.FileError {
|
func DeleteEmptyDir(filePath string) error {
|
||||||
err, is, _ := IsDirExist(filePath)
|
err, is, _ := IsDirExist(filePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err2.ENewFileError(err)
|
return err
|
||||||
}
|
}
|
||||||
if !is {
|
if !is {
|
||||||
return err2.NewFileError("非文件夹")
|
return errors.New("非文件夹")
|
||||||
}
|
}
|
||||||
|
|
||||||
//拿到所有的空文件夹
|
//拿到所有的空文件夹
|
||||||
@@ -278,7 +278,7 @@ func DeleteEmptyDir(filePath string) *err2.FileError {
|
|||||||
for _, row := range emptyDirList {
|
for _, row := range emptyDirList {
|
||||||
err := os.RemoveAll(row)
|
err := os.RemoveAll(row)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err2.ENewFileError(err)
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,7 +307,7 @@ func getAllDir(dir string) []string {
|
|||||||
return dirList
|
return dirList
|
||||||
}
|
}
|
||||||
|
|
||||||
func isEmptyDir(dir string) (*err2.FileError, bool) {
|
func isEmptyDir(dir string) (error, bool) {
|
||||||
_, err := ioutil.ReadDir(dir)
|
_, err := ioutil.ReadDir(dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@@ -316,7 +316,7 @@ func isEmptyDir(dir string) (*err2.FileError, bool) {
|
|||||||
for _, f := range file {
|
for _, f := range file {
|
||||||
info, err := f.Stat()
|
info, err := f.Stat()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err2.ENewFileError(err), false
|
return err, false
|
||||||
}
|
}
|
||||||
if !info.IsDir() {
|
if !info.IsDir() {
|
||||||
return nil, false
|
return nil, false
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
package file
|
package file
|
||||||
|
|
||||||
import (
|
import (
|
||||||
err2 "Go-Tool/err"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
@@ -18,10 +17,10 @@ import (
|
|||||||
* @return
|
* @return
|
||||||
* @description
|
* @description
|
||||||
*/
|
*/
|
||||||
func WriteByIoUtil(filePath, content string) *err2.FileError {
|
func WriteByIoUtil(filePath, content string) error {
|
||||||
err := ioutil.WriteFile(filePath, []byte(content), 0644)
|
err := ioutil.WriteFile(filePath, []byte(content), 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err2.ENewFileError(err)
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -33,15 +32,15 @@ func WriteByIoUtil(filePath, content string) *err2.FileError {
|
|||||||
* @return File 文件对象,成功写入才会返回文件对象,否则是nil
|
* @return File 文件对象,成功写入才会返回文件对象,否则是nil
|
||||||
* @description
|
* @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)
|
fileObj, err := os.OpenFile(filePath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err2.ENewFileError(err), nil
|
return err, nil
|
||||||
}
|
}
|
||||||
defer fileObj.Close()
|
defer fileObj.Close()
|
||||||
|
|
||||||
if _, err := fileObj.WriteString(content); err != nil {
|
if _, err := fileObj.WriteString(content); err != nil {
|
||||||
return err2.ENewFileError(err), nil
|
return err, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, fileObj
|
return nil, fileObj
|
||||||
|
|||||||
Reference in New Issue
Block a user