杜龙少(sdvdxl)

go读取文件

Word count: 335 / Reading time: 1 min
2016/03/13 Share

使用File

不多说直接上代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
func readUseFile() {
file, err := os.Open("f:/file.txt")
handleError(err)

defer file.Close()

buf := make([]byte, 512)
for {
n, err := file.Read(buf)

//1
// if err != nil && err == io.EOF {
// break
// }

//2
// if n == 0 {
// break
// }

//3
if n == 0 && err != nil && err == io.EOF {
break
}

fmt.Print(n)
fmt.Print(string(buf))
}

handleError(err)

}
可以看到file本身具有读取文件内容的函数入参事一个切片是数据的缓冲区出参第一个是实际读取的大小第二个是读取过程中发生的错误如果有数据且读取成功n>0,如果恰好读到文件末尾n=0如果读取过程中有错误发生err不为nil如果读取正常且读到了文件末尾errio.EOF
读取过程中有三种方法可以跳出死循环第一种方法是判断err状态如果不为nil且是io.EOF则已经读取完毕第二种方法是判断实际读取的数量如果读取的量为0则认为已经读取结束第三种方式是上面两种的结合这种判断要比上面两种中仁和一种都要保险缺点就是罗嗦点
CATALOG
  1. 1. 使用 File