|
|
package FileUtil
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
"io"
|
|
|
"io/ioutil"
|
|
|
"log"
|
|
|
"os"
|
|
|
"path/filepath"
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
|
/**
|
|
|
功能:写入文件内容
|
|
|
作者:黄海
|
|
|
时间:2020-04-24
|
|
|
*/
|
|
|
func WriteFileContent(filepath string, content string) error {
|
|
|
contentByte := []byte(content)
|
|
|
err := ioutil.WriteFile(filepath, contentByte, 0644)
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:读取文件内容
|
|
|
作者:黄海
|
|
|
时间:2019-12-31
|
|
|
*/
|
|
|
func ReadFileContent(filepath string) string {
|
|
|
file, err := os.Open(filepath)
|
|
|
if err != nil {
|
|
|
log.Print("文件打开失败:", err)
|
|
|
}
|
|
|
defer file.Close()
|
|
|
|
|
|
buf := make([]byte, 12) // 存放文件内容的缓存,相当于中转站
|
|
|
data := make([]byte, 0) // 用来存放文件内容,buf读取的内容都会写到data里面去
|
|
|
|
|
|
for {
|
|
|
//无限循环,不断读取
|
|
|
n, err := file.Read(buf)
|
|
|
// 什么时候文件读完呢?如果文件读完的话,那么err不为nil,而是io.EOF
|
|
|
// 所以我们可以进行判断
|
|
|
if err != nil {
|
|
|
//如果err != nil说明出错了,但如果还等于io.EOF的话,说明读完了,因为文件读完,err也不为nil。直接break
|
|
|
if err == io.EOF {
|
|
|
break
|
|
|
} else {
|
|
|
//如果错误不是io.EOF的话,说明就真的在读取中出现了错误,直接panic出来
|
|
|
panic(err)
|
|
|
}
|
|
|
}
|
|
|
//此时文件内容写到buf里面去了,写了多少个呢?写了n个,那么我们再写到data里面去
|
|
|
data = append(data, buf[:n]...)
|
|
|
}
|
|
|
return string(data)
|
|
|
}
|
|
|
|
|
|
//获取指定目录下的所有文件,不进入下一级目录搜索,可以匹配后缀过滤。
|
|
|
func ListDir(dirPth string, suffix string) (files []string, err error) {
|
|
|
files = make([]string, 0, 10)
|
|
|
dir, err := ioutil.ReadDir(dirPth)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
PthSep := string(os.PathSeparator)
|
|
|
suffix = strings.ToUpper(suffix) //忽略后缀匹配的大小写
|
|
|
for _, fi := range dir {
|
|
|
if fi.IsDir() { // 忽略目录
|
|
|
continue
|
|
|
}
|
|
|
if strings.HasSuffix(strings.ToUpper(fi.Name()), suffix) { //匹配文件
|
|
|
files = append(files, dirPth+PthSep+fi.Name())
|
|
|
}
|
|
|
}
|
|
|
return files, nil
|
|
|
}
|
|
|
|
|
|
//获取指定目录及所有子目录下的所有文件,可以匹配后缀过滤。
|
|
|
func WalkDir(dirPth, suffix string) (files []string, err error) {
|
|
|
files = make([]string, 0, 30)
|
|
|
suffix = strings.ToUpper(suffix) //忽略后缀匹配的大小写
|
|
|
err = filepath.Walk(dirPth, func(filename string, fi os.FileInfo, err error) error { //遍历目录
|
|
|
if err != nil { //忽略错误
|
|
|
fmt.Println(err)
|
|
|
return err
|
|
|
}
|
|
|
if fi.IsDir() { // 忽略目录
|
|
|
return nil
|
|
|
}
|
|
|
if strings.HasSuffix(strings.ToUpper(fi.Name()), suffix) {
|
|
|
files = append(files, filename)
|
|
|
}
|
|
|
return nil
|
|
|
})
|
|
|
return files, err
|
|
|
}
|