github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/08_file/opfile/bufio_test.go (about) 1 package opfile 2 3 import ( 4 "bufio" 5 "fmt" 6 "os" 7 "testing" 8 ) 9 10 func TestBufioDemo(t *testing.T) { 11 bufioDemo() 12 } 13 func bufioDemo() { 14 15 /* 16 bufio:高效io读写 17 buffer缓存 18 io:input/output 19 20 将io包下的Reader,Write对象进行包装,带缓存的包装,提高读写的效率 21 22 ReadBytes() 23 ReadString() 24 ReadLine() 25 26 */ 27 28 fileName := "aa.txt" 29 file, _ := os.Open(fileName) //看作是io包下的Reader,Write的实现 30 defer file.Close() 31 r1 := bufio.NewReader(file) //构建带缓存的Reader对象:bufio.Reader 32 fmt.Printf("%T\n", r1) 33 data, flag, err := r1.ReadLine() 34 fmt.Println(err) 35 fmt.Println(flag) 36 fmt.Println(data) 37 fmt.Println(string(data)) 38 39 //s1, _ := r1.ReadString('\n') 40 //fmt.Println(s1) 41 //s1, _ = r1.ReadString('\n') 42 //fmt.Println(s1) 43 //s1, _ = r1.ReadString('\n') 44 //fmt.Println(s1) 45 //s1, _ = r1.ReadString('\n') 46 //fmt.Println(s1) 47 // 48 //for { 49 // s1, err := r1.ReadString('\n') 50 // if err == io.EOF { 51 // fmt.Println("读取完毕。。") 52 // break 53 // } 54 // fmt.Print(s1) 55 //} 56 57 data, _ = r1.ReadBytes('\n') 58 fmt.Println(string(data)) 59 60 s2 := "" 61 fmt.Scanln(&s2) 62 fmt.Println(s2) 63 64 r2 := bufio.NewReader(os.Stdin) 65 s2, _ = r2.ReadString('\n') 66 fmt.Println(s2) 67 68 }