go_dreamfactory/lego/utils/flietools/flietools.go
2022-06-07 20:18:22 +08:00

85 lines
1.6 KiB
Go

package flietools
import (
"bufio"
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"os"
"path"
"strings"
)
//判断文件或文件夹是否存在
func IsExist(path string) bool {
_, err := os.Stat(path)
if err != nil {
if os.IsExist(err) {
return true
}
if os.IsNotExist(err) {
return false
}
return false
}
return true
}
//获取去除文件后缀的文件名称
func GetFileNameSubSuffix(filepath string) string {
var fileSuffix string
fileSuffix = path.Ext(filepath)
var filenameOnly string
filenameOnly = strings.TrimSuffix(filepath, fileSuffix)
return filenameOnly
}
//读取json文件到结构体中 参数必须是指针
func ReadJsonFileToStruct(path string, d interface{}) error {
var data []byte
buf := new(bytes.Buffer)
f, err := os.Open(path)
if err != nil {
return err
}
defer f.Close()
r := bufio.NewReader(f)
for {
line, err := r.ReadSlice('\n')
if err != nil {
if len(line) > 0 {
buf.Write(line)
}
break
}
if !strings.HasPrefix(strings.TrimLeft(string(line), "\t "), "//") {
buf.Write(line)
}
}
data = buf.Bytes()
return json.Unmarshal(data, d)
}
//将数据写入json文件中
func WrietStructToJsonFile(path string, d interface{}) error {
data, err := json.Marshal(d)
if err != nil {
return err
}
err = ioutil.WriteFile(path, data, 0644)
return err
}
//创建目录文件
func CreateDirectory(logpath string) error {
logdir := string(logpath[0:strings.LastIndex(logpath, "/")])
if !IsExist(logdir) {
err := os.MkdirAll(logdir, os.ModePerm)
if err != nil {
return fmt.Errorf("创建目录文件失败 1" + err.Error())
}
}
return nil
}