os.Open()-->返回值*File,err ***** 打开后可以
File.Read([]byte)-->count,err,读取数据,读取完毕err会显示EOF,来证明整个文件读取完毕,
打开文件后不要忘记关闭哈
可以利用defer,延迟 最后关闭
derer File.close 关闭文件
package main import ( "os" "fmt" "io" ) func main() { file,err:= os.Open("C:\\liu\\pro\\aa.txt") if err!=nil{ fmt.Println("文件打开失败。。") return } defer file.Close() //读取数据 bs := make([] byte,4) count := 0//每次读取的数量 for { count, err = file.Read(bs) if err ==io.EOF{ fmt.Println() fmt.Println("数据读取完毕。。") break } fmt.Print(string(bs[:count])) } /* //第一次读取,通过file读取对应的文件,将数据读入到bs中,返回值是本次实际读入的数量 count ,err = file.Read(bs) fmt.Println(err) //<nil> fmt.Println(count) //4 fmt.Println(bs) //[97 98 99 100] fmt.Println(string(bs)) //abcd //第二次读取 count,err = file.Read(bs) fmt.Println(err) //<nil> fmt.Println(count) //4 fmt.Println(bs) //[101 102 103 104] fmt.Println(string(bs)) //efgh //第三次读,读取2个 count,err = file.Read(bs) fmt.Println(err) //<nil> fmt.Println(count) //2 fmt.Println(bs) //[101 102 103 104] //fmt.Println(string(bs)) //efgh ijgh fmt.Println(string(bs[:count])) //ij //第四次读取,读取到文件末尾时,返回error为io.EOF,,而且count的值为0 count, err= file.Read(bs) fmt.Println(err) //EOF fmt.Println(count) //0 }
File.ReadAt([] byte, off)-->coutn,err,从指定off位置读取
package main import ( "os" "fmt" ) func main() { /* Read([]bs),默认从头开始读取 光标在最后,再次读取,返回error为io.EOF ReadAt([] bs, offset int),从指定位置开始读取 */ file,_:=os.Open("C:\\liu\\pro\\aa.txt") bs := make([] byte ,4) /* 1.ReadAt(bs, 0)-->4 2.ReadAt(bs,4)-->4 3.ReadAt(bs,8)-->2 EOF */ count, err:=file.ReadAt(bs,2) fmt.Println(err) //<nil> fmt.Println(count) //4 fmt.Println(string(bs[0:count])) count, err = file.ReadAt(bs,7) fmt.Println(err) //EOF fmt.Println(count) //3 fmt.Println(string(bs[:count])) }