出错了出错了,注释掉就没事了,centos 7.0
读取时err会等于EOF
我这里正常,具体报什么错?把错误信息贴出来呗。
最后一个字节吧
如果一开始有数据 seek直接读取到末尾如果文件为空需要先将\n读取
我一开始文件里面是有数据的
这是正常的把,err==io.EOF 是处理文件到末尾的情况,然后再需要等待日志继续产生。
func (r *ReadFromFile) Read(rc chan []byte) { //读取数据 f, err := os.Open(r.path) if err != nil { panic(fmt.Sprintf("open file fail:%s", err.Error())) } //从文件末尾逐行读取文件内容 f.Seek(0, 2) rd := bufio.NewReader(f) for { line, err := rd.ReadBytes('\n') if err == io.EOF { log.Println(err) time.Sleep(500 * time.Millisecond) continue } else if err != nil { panic(fmt.Sprintf("ReadBytes error: %s", err.Error())) } rc <- line[:len(line)-1] } }
如果注释不
f.Seek(0, 2)
则直接在
line, err := rd.ReadBytes('\n')
err==io.EOF