zoukankan      html  css  js  c++  java
  • Golang基础——文件操作

    文件操作

    func main() {
        // 创建文件
    	// 创建文件会清空已存在的文件
    	// 创建文件,文件路径,路径1:\ 2:直接 / 即可
    	f, err := os.Create("./users/aaa.txt")
        
    	if err != nil {
    		// 文件路径不存在
    		// 文件无操作权限
    		// 程序打开文件上限
    		fmt.Println(err)
    		return
    	} else {
            // 如果 
     不会换行:windows换行为:
    
            
            // 写入字符串
    		f.WriteString("gogogo
    ")
    		f.WriteString("11111
    ")
            
            // 写入切片
    		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('
    ') // 返回读取的内容和err,以换行符作为一行的结尾
    		fmt.Println("-------------------")
    		fmt.Println(string(rr))
    		if errrr != nil { // 最后一行的时候:errrr为:EOF
    			fmt.Println(errrr)
    			break
    		}
    		fmt.Println("-------------------")
    	}
    	fppp.Close()
    }
    
  • 相关阅读:
    UpdateParameterUtils
    从WAVE头文件里获取压缩方式
    oracle rac下调节redo log file 文件大小
    centos下yum安装lamp和lnmp轻松搞定
    回车登录(支持IE 和 火狐等浏览器)
    图结构练习——推断给定图是否存在合法拓扑序列(拓扑排序推断环)
    HDU 2181 DFS
    Android 运行 gson.toJson(object) 报java.lang.StackOverflowError异常
    Spring-SpringJdbcTemlate配置介绍
    Cocos2D-x设计模式发掘之中的一个:单例模式
  • 原文地址:https://www.cnblogs.com/pythonwl/p/14683360.html
Copyright © 2011-2022 走看看