首页 > 其他 > 详细

Golang基础——文件操作

时间:2021-04-21 10:15:58      阅读:32      评论:0      收藏:0      [点我收藏+]

文件操作

func main() {
    // 创建文件
	// 创建文件会清空已存在的文件
	// 创建文件,文件路径,路径1:\\ 2:直接 / 即可
	f, err := os.Create("./users/aaa.txt")
    
	if err != nil {
		// 文件路径不存在
		// 文件无操作权限
		// 程序打开文件上限
		fmt.Println(err)
		return
	} else {
        // 如果 \n 不会换行:windows换行为:\r\n
        
        // 写入字符串
		f.WriteString("gogogo\n")
		f.WriteString("11111\n")
        
        // 写入切片
		s := []byte{‘1‘, ‘2‘, ‘h‘}
		c, err := f.Write(s)
		if err == nil {
			fmt.Println(c)
		}
        
        
		// l, err := f.Seek(0, os.SEEK_END)  // 获取文件大小
		l, err := f.Seek(0, io.SeekEnd) // 获取文件大小
		fmt.Println(l)
		fmt.Println(err)
        
        // 写入指定位置的切片
		f.WriteAt([]byte("123LINWANG"), l) // 在l位置开始,写入文件
		f.WriteAt([]byte("aaaaaaa"), 0)    // 覆盖原来的,包括换行符
		f.WriteAt([]byte("fdjdkfd"), 100)  // 中间会有间隙,可以运行
		defer func() {
			fmt.Println("文件关闭了") // 整个main函数执行结束才执行
		}() // 关闭文件
	}
	f.Close()
    
    
	// 打开文件
    // 只读方式打开
	fo,erro := os.Open("./users/aaa.txt")
    // 可读写,打开方式,权限 0-7
    fp, errp := os.OpenFile("./users/aaa.txt", os.O_RDWR, 6)
	
    if errp == nil {
		fp.WriteString("zzzzzzzzz")
	}
	fp.Close()
	fpp, errpp := os.Open("./users/aaa.txt")
	fmt.Println(errpp)
    
	a := make([]byte, 10)
	res, _ := fpp.Read(a) // 返回内容 长度,err
	// At end of file, Read returns 0, io.EOF.
	// 读取到文件末尾,返回:0, io.EOF

	fmt.Println(string(a[:res])) // 读取到了切片中
	fpp.Close()

	// 按行读取
    // 文件缓冲区:磁盘存储速度比cpu速度慢,要有缓冲区。存取预存,缓冲区更快。
	fppp, _ := os.Open("./users/aaa.txt")
	r := bufio.NewReader(fppp) // 创建文件缓冲区

	for {
		rr, errrr := r.ReadBytes(‘\n‘) // 返回读取的内容和err,以换行符作为一行的结尾
		fmt.Println("-------------------")
		fmt.Println(string(rr))
		if errrr != nil { // 最后一行的时候:errrr为:EOF
			fmt.Println(errrr)
			break
		}
		fmt.Println("-------------------")
	}
	fppp.Close()
}

Golang基础——文件操作

原文:https://www.cnblogs.com/pythonwl/p/14683360.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!