Ai
1 Star 0 Fork 0

pheker/learn-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
FileUtil.go 2.26 KB
一键复制 编辑 原始数据 按行查看 历史
pheker 提交于 2022-01-01 23:23 +08:00 . add some util
package utils
import (
"bufio"
"gitee.com/pheker/learn-go/tool/log"
"io"
"io/fs"
"io/ioutil"
"net/http"
"os"
"path/filepath"
"strings"
)
func FileExist(path string) bool {
_, err := os.Stat(path)
return err == nil || os.IsExist(err)
}
// ReadLines 读取所有行
// filename 文件名
// sep 行分隔符
func ReadLines(filename string, sep string) []string {
if !FileExist(filename) {
return make([]string, 0)
}
b, _ := ioutil.ReadFile(filename)
txt := string(b)
lines := strings.Split(txt, sep)
return lines
}
// ReadLine 按行读取
func ReadLine(filename string, lineHandler func(line string, lineno int) bool) {
f, err := os.Open(filename)
if err != nil {
return
}
buf := bufio.NewReader(f)
var lineno = 0
for {
line, _, eof := buf.ReadLine()
if eof == io.EOF {
break
}
nextLine := lineHandler(string(line), lineno)
if !nextLine {
break
}
lineno++
}
}
func IsDir(path string) bool {
s, err := os.Stat(path)
if err != nil {
return false
}
return s.IsDir()
}
func WriteLines(path string, lines []string) error {
txt := strings.Join(lines, "\n")
return WriteLine(path, txt, false)
}
func AppendLine(path string, line string) error {
return WriteLine(path, line, true)
}
func WriteLine(path string, line string, append bool) error {
var flag = os.O_RDWR | os.O_CREATE
if append {
flag |= os.O_APPEND
}
dir := filepath.Dir(path)
exist := FileExist(dir)
if !exist {
os.MkdirAll(dir, 0766)
}
file, err := os.OpenFile(path, flag, 0766)
if err != nil {
log.Error(err.Error())
return err
}
file.WriteString(line)
file.Write([]byte{'\n'})
return nil
}
func DownloadUrl(url string) string {
client := http.Client{}
html, err := client.Get(url)
if err != nil || html.StatusCode != http.StatusOK {
log.Errorf("下载html失败: %s\n", err)
}
content, readerr := ioutil.ReadAll(html.Body)
if readerr != nil {
return ""
}
return string(content)
}
type FileFilter func(path string, info fs.FileInfo) bool
func WalkFileList(fpath string, filter FileFilter) ([]Pair, error) {
var files []Pair
err := filepath.Walk(fpath, func(path string, info fs.FileInfo, err error) error {
if !info.IsDir() && (filter == nil || filter(path, info)) {
files = append(files, Pair{path, info})
}
return nil
})
return files, err
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/pheker/learn-go.git
git@gitee.com:pheker/learn-go.git
pheker
learn-go
learn-go
v1.0.4

搜索帮助