golang:IO File 操作

1,创建文件

/*createFile 创建文件 | 参数说明:dir 路径,fileName 文件名 */
func createFile(dir, fileName string) (*os.File, error) {
	var err error
	//目录不存在则创建
	if _, err = os.Stat(dir); err != nil {
		if err = os.MkdirAll(dir, 0777); err != nil { //这里如果是0711权限 可能会导致其它线程,读取文件夹内内容出错
			return nil, err
		}
	}
	//创建文件
	var newFile *os.File
	if newFile, err = os.Create(dir + "/" + fileName); err != nil {
		return nil, err
	}
	//创建成功,返回文件指针
	return newFile, nil
}

  2,写入文件

/*writeFile 写入文件 | 参数说明:path 文件路径 ,content 写入内容*/
func writeFile(path string, content string) error {
	//打开文件 | 如果文件不存在,这里会自动创建文件
	f, err := os.OpenFile(path, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0666)
	if err != nil {
		return err
	}
	io.WriteString(f, content) //写入文件
	f.Close()                  //关闭文件
	return nil
}

  3,读取文件

/*readFile 读取文件 | 参数说明:path 文件路径*/
func readFile(path string) []string {
	//打开文件
	f, _ := os.Open(path)
	br := bufio.NewReader(f)
	var lines []string
	for {
		a, _, c := br.ReadLine()
		if c == io.EOF {
			break
		}
		lines = append(lines, string(a)) //string(a)为一行数据
	}
	//关闭文件
	f.Close()
	return lines
}

  4,删除文件 

os.Remove(path)

  5,判断文件是否存在

//判断文件是否存在  存在返回 true ,不存在返回  false
func isExist(path string) bool {
	_, err := os.Stat(path)
	return err == nil || os.IsExist(err)
}

  6,读取文件大小

/*fileSize 读取指定路径的文件尺寸  返回文件大小 | 参数说明:path 文件路径  */
func fileSize(path string) int64 {
	f, e := os.Stat(path)
	if e != nil {
		fmt.Println(e.Error())
		return 0
	}
	return f.Size()
}

   7,文件重命名

os.Rename(path, newpath)

  8,文件最后修改时间

/*fileModifyTime 文件最后修改时间 */
func fileModifyTime(path string) time.Time {
	var t time.Time
	fileInfo, err := os.Stat(path)
	if err == nil || os.IsExist(err) {
		t = fileInfo.ModTime()
	}
	return t
}

  

猜你喜欢

转载自www.cnblogs.com/ecake/p/9747137.html