代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。