zoukankan      html  css  js  c++  java
  • go语言之进阶篇借助bufio实现按行读取内容

    1、借助bufio实现按行读取内容

    示例:

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"io"
    	"os"
    )
    
    func WriteFile(path string) {
    	//打开文件,新建文件
    	f, err := os.Create(path)
    	if err != nil {
    		fmt.Println("err = ", err)
    		return
    	}
    
    	//使用完毕,需要关闭文件
    	defer f.Close()
    
    	var buf string
    
    	for i := 0; i < 10; i++ {
    		//"i = 1
    ", 这个字符串存储在buf中
    		buf = fmt.Sprintf("i = %d
    ", i)
    		//fmt.Println("buf = ", buf)
    
    		n, err := f.WriteString(buf)
    		if err != nil {
    			fmt.Println("err = ", err)
    		}
    		fmt.Println("n = ", n)
    	}
    }
    
    func ReadFile(path string) {
    	//打开文件
    	f, err := os.Open(path)
    	if err != nil {
    		fmt.Println("err = ", err)
    		return
    	}
    
    	//关闭文件
    	defer f.Close()
    
    	buf := make([]byte, 1024*2) //2k大小
    
    	//n代表从文件读取内容的长度
    	n, err1 := f.Read(buf)
    	if err1 != nil && err1 != io.EOF { //文件出错,同时没有到结尾
    		fmt.Println("err1 = ", err1)
    		return
    	}
    
    	fmt.Println("buf = ", string(buf[:n]))
    
    }
    
    //每次读取一行
    func ReadFileLine(path string) {
    	//打开文件
    	f, err := os.Open(path)
    	if err != nil {
    		fmt.Println("err = ", err)
    		return
    	}
    
    	//关闭文件
    	defer f.Close()
    
    	//新建一个缓冲区,把内容先放在缓冲区
    	r := bufio.NewReader(f)
    
    	for {
    		//遇到'
    '结束读取, 但是'
    '也读取进入
    		buf, err := r.ReadBytes('
    ')
    		if err != nil {
    			if err == io.EOF { //文件已经结束
    				break
    			}
    			fmt.Println("err = ", err)
    		}
    
    		fmt.Printf("buf = #%s#
    ", string(buf))
    	}
    
    }
    
    func main() {
    	path := "./demo.txt"
    
    	//WriteFile(path)
    	//ReadFile(path)
    	ReadFileLine(path)
    }
    

    执行结果:

    err1 =  i = 0
    
    i = 1
    i = 2
    i = 3
    i = 4
    i = 5
    i = 6
    i = 7
    i = 8
    i = 9
    

      

  • 相关阅读:
    【WPF】数据验证
    CSS 属性:touch-action
    sublime text3 中设置默认浏览器,并且设置快捷键
    Git克隆、修改、更新项目,及查看项目地址命令
    监听文本框输入oninput和onpropertychange事件
    css基础笔记
    纯css,div隐藏滚动条,保留鼠标滚动效果。
    打印机如何取消打印任务
    git使用上
    Git设置记住账号密码
  • 原文地址:https://www.cnblogs.com/nulige/p/10268061.html
Copyright © 2011-2022 走看看