package FileUtil import ( "fmt" "io" "io/ioutil" "log" "os" "path/filepath" ) /** 功能:读取文件内容 作者:黄海 时间: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) } /** 功能:获取文件的大小 作者:黄海 时间:2020-01-20 */ func GetFileSize(filename string) int64 { var result int64 filepath.Walk(filename, func(path string, f os.FileInfo, err error) error { result = f.Size() return nil }) return result } /** 功能:向文件中写入内容 作者:黄海 时间:2020-03-20 */ func WriteToFile(filePath string, msg string) { exists,err:=PathExists(filePath) if err!=nil{ os.Exit(111) fmt.Println(err.Error()) } if exists{ os.Remove(filePath) } if err := ioutil.WriteFile(filePath, []byte(msg), 777); err != nil{ os.Exit(111) fmt.Println(err.Error()) } } func PathExists(path string) (bool, error) { _, err := os.Stat(path) if err == nil { return true, nil } if os.IsNotExist(err) { return false, nil } return false, err }