版权声明:版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_43851310/article/details/87823619
读文件
打开文件
f,err:=os.Open()
读文件
Read() 将文件的信息读取进一个[]byte切片
data := make([]byte, 100)
count, err := f.Read(data)
func main(){
f,err:=os.Open("./1.txt")
if err!=nil{
fmt.Println("err =",err)
return
}
defer f.Close()
data:=make([]byte,1024)
count,err:=f.Read(data)
if err!=nil && err==io.EOF{ //错误或者读取到末尾
fmt.Println("err1 = ",err)
return
}
fmt.Printf("read %d bytes: %q\n",count,data[:count])
}
Output :
read 23 bytes: "Golang\r\n春江花月夜"
逐行读取文本:
*func NewReader(rd io.Reader) Reader
NewReader创建一个具有默认大小缓冲、从r读取的*Reader。*func (b Buffer) ReadBytes(delim byte) (line []byte, err error)
ReadBytes读取直到第一次遇到delim字节,返回一个包含已读取的数据和delim字节的切片
func main() {
f, _ := os.Open("/1.txt")
defer f.Close()
rd := bufio.NewReader(f) //创建切片缓冲区
for {
buf, err := rd.ReadBytes('\n') //读取到\n结束
fmt.Printf("1|%q|\n", string(buf))
if err != nil {
if err == io.EOF { //文件已经结束
return
}
fmt.Println("err = ", err)
}
fmt.Printf("2|%q|\n", string(buf))
}
}
Output :
1|"Golang\r\n"|
2|"Golang\r\n"|
1|"春江花月夜"|
注意:
1."春江花月夜"后面因为没有\n,打印输出应在判断之前执行