90_Go基础_1_58 read
1 package main 2 3 import ( 4 "fmt" 5 "io" 6 "os" 7 ) 8 9 func main() { 10 /* 11 读取数据: 12 Reader接口: 13 Read(p []byte)(n int, error) 14 */ 15 16 // step1:打开文件 17 fileName := "D:\\Go\\web2\\aa.txt" 18 file, err := os.Open(fileName) 19 if err != nil { 20 fmt.Println("err:", err) 21 return 22 } 23 // step3:关闭文件 24 defer file.Close() 25 26 // step2:读取数据 27 bs := make([]byte, 4) 28 29 // //第一次读取 30 // n, err := file.Read(bs) 31 // fmt.Println(err) // <nil> 32 // fmt.Println(n) // 4 33 // fmt.Println(bs) // [97 98 99 100] 34 // fmt.Println(string(bs)) // abcd 35 36 // //第二次读取 37 // n, err = file.Read(bs) 38 // fmt.Println(err) // <nil> 39 // fmt.Println(n) // 4 40 // fmt.Println(bs) // [101 102 103 104] 41 // fmt.Println(string(bs)) // efgh 42 43 // //第三次读取 44 // n, err = file.Read(bs) 45 // fmt.Println(err) //<nil> 46 // fmt.Println(n) //2 47 // fmt.Println(bs) //[105 106 103 104] 48 // fmt.Println(string(bs)) //ijgh 49 50 // //第四次读取 51 // n, err = file.Read(bs) 52 // fmt.Println(err) //EOF 53 // fmt.Println(n) //0 54 55 n := -1 56 for { 57 n, err = file.Read(bs) 58 if n == 0 || err == io.EOF { 59 fmt.Println("读取到了文件的末尾,结束读取操作。。") 60 break 61 } 62 fmt.Println(n, string(bs[:n])) 63 // 4 abcd 64 // 4 efgh 65 // 4 ijkl 66 // 4 mnop 67 // 4 qrst 68 // 4 uvwx 69 // 2 yz 70 } 71 }