bufio包

94 阅读1分钟

缓冲区 高效的io读写 减少访问本地磁盘的次数

package main 
import ("os"
        "fmt")
        
func main{
    filename := ""
    file,err := os.Open(filename)
    if err != nil{
        fmt.println
        return
    }
    defer os.Close()
    
    //创建Reader对象
    b1:=bufio.NewReader(file)
    p := make([]byte,4096)  /大小小于4096,因为上面的缓冲区固定了大小4096
    n1,err :=b1.Read(p)
    fmt.Println(n1)
    
}

//读取一行 ReadLine

package main 
import ("os"
        "fmt")
        
func main{
    filename := ""
    file,err := os.Open(filename)
    if err != nil{
        fmt.println
        return
    }
    defer os.Close()
    
    
    //创建Reader对象
    b1:=bufio.NewReader(file)
    data,flag,err := b1.ReadLine()//读取一行
    fmt.Println(string(data))
    

//一行一行读取打印

package main 
import ("os"
        "fmt")
        
func main{
    filename := ""
    file,err := os.Open(filename)
    if err != nil{
        fmt.println
        return
    }
    defer os.Close()
    
    
    //创建Reader对象
    b1:=bufio.NewReader(file)
    //一行一行读取打印
    for{
        s1 ,err := b1.ReadString('\n')
        if err == io.EOF{
            fmt.Println()
        }
        fmt.Println(s1)
    }
    
//但是存在问题,如果键盘输入有空格,就只能读取空格前
s2 := ""
fmt.Scanln(&s2)
fmt.Println(s2)

//有空格也能读取到

b2:=bufio.NewReader(os.Stdin)
s2,_ := b2.ReadString("\n")

//write

func main{
    filename := ""
    file,_ := os.OpenFile(filename,os.O_CREAT|os.O_WRONLY,OS.ModePerm)
    defer file.close()
    
    w1 := bufio.NewWriter(file)
    n,err := w1.WriteString("hhhhh")
    //此时写到了缓冲区
    //需要刷新缓冲区
    w1.Flush()
    
    
    
    

}