zoukankan      html  css  js  c++  java
  • GO文件读写01---读文件

    打开文件

    package main
    
    import (
    	"fmt"
    	"os"
    )
    
    /*
    buffer 缓冲区
    utility 便利的工具
    util 便捷工具(傻瓜式调用)
    permission 权限
    */
    
    //便捷的打开文件
    func main021() {
    	//打开文件,返回文件对象的指针和错误
    	filePtr, err := os.Open("F:/BlockChain/code/W2/day4/测试文件")
    
    	//如果有错误,说明打开失败,否则就是打开成功
    	if err != nil{
    		fmt.Printf("打开文件失败,err=%s",err)
    
    		//结束当前函数
    		return
    	}else {
    		fmt.Println("打开文件成功")
    	}
    
    	//文件是IO资源,使用完毕一定要关闭文件,以释放IO资源
    	defer func() {
    		filePtr.Close()
    		fmt.Println("文件已关闭")
    	}()
    
    	//打印文件信息
    	fmt.Println("filePtr=",filePtr)
    
    }
    
    func main() {
    	//file, err := os.OpenFile("F:/BlockChain/code/W2/day4/测试文件", os.O_RDONLY, 0)
    	file, err := os.OpenFile("F:/BlockChain/code/W2/day4/测试文件", os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0)
    	if err!=nil{
    		fmt.Println("文件打开失败,err=",err)
    		return
    	}else {
    		fmt.Println("文件打开成功")
    	}
    	defer file.Close()
    }
    

    缓冲式读文件

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"io"
    	"os"
    )
    
    func main() {
    	file, err := os.OpenFile("F:/BlockChain/code/W2/day4/测试文件", os.O_RDONLY, 0)
    	if err != nil{
    		fmt.Println("文件打开失败,err=",err)
    		return
    	}else{
    		fmt.Println("文件打开成功")
    	}
    	//函数返回前,关闭文件,释放io资源
    	defer func() {
    		file.Close()
    		fmt.Println("文件已关闭")
    	}()
    
    	//创建文件的缓冲读取器
    	reader := bufio.NewReader(file)
    
    	//循环读取数据,以换行符为定界符,直到文件末尾
    	for{
    		//读取一段字符串,以换行符为定界符
    		line, err := reader.ReadString('
    ')
    		//判断读取是否有错误
    		if err != nil{
    			fmt.Println("读取失败,err=", err)
    
    			//读到了文件末尾
    			if err == io.EOF{
    				fmt.Println("已到文件末尾")
    				//退出循环
    				break
    			}
    		}else{
    			//没有错误读取成功,打印读到的数据
    			fmt.Print(line)
    		}
    	}
    
    
    	fmt.Println("文件读取结束")
    }
    

    使用ioutil包下的API进行便捷的读取

    func main() {
    	//读取指定文件,获取原始字节,其内部调用了文件的打开与关闭
    	bytes, err := ioutil.ReadFile("F:/BlockChain/code/W2/day4/测试文件")
    	//判断是否有错误
    	if err != nil{
    		fmt.Println("文件读取失败,err=",err)
    		return
    	}else {
    		//将原始字节强转为string并输出
    		fmt.Println("文件读取成功")
    		text := string(bytes)
    		fmt.Println(text)
    	}
    }
    

      

  • 相关阅读:
    BNU 51002 BQG's Complexity Analysis
    BNU OJ 51003 BQG's Confusing Sequence
    BNU OJ 51000 BQG's Random String
    BNU OJ 50999 BQG's Approaching Deadline
    BNU OJ 50998 BQG's Messy Code
    BNU OJ 50997 BQG's Programming Contest
    CodeForces 609D Gadgets for dollars and pounds
    CodeForces 609C Load Balancing
    CodeForces 609B The Best Gift
    CodeForces 609A USB Flash Drives
  • 原文地址:https://www.cnblogs.com/yunweiqiang/p/11962872.html
Copyright © 2011-2022 走看看