[Go] go等待读取最后一行的数据内容
程序员文章站
2022-07-02 12:34:21
这段代码是参照慕课网的视频教程,主要是f.Seek(0, os.SEEK_END)移动到末尾,但是里面有个小问题,当打开的文件被重新清空内容的清空下,就再也不能到读取数据了,比如在开启读取后 echo ''>1.log 这样就再也读不到了,tail包是解决了这个问题的 使用tail包测试时,有re- ......
这段代码是参照慕课网的视频教程,主要是f.seek(0, os.seek_end)移动到末尾,但是里面有个小问题,当打开的文件被重新清空内容的清空下,就再也不能到读取数据了,比如在开启读取后 echo ''>1.log 这样就再也读不到了,tail包是解决了这个问题的
package main import ( "bufio" "fmt" "io" "os" "strings" "time" ) func main() { readchannel := make(chan string) go readfile(readchannel) for r := range readchannel { fmt.println(r) } } func readfile(readchannel chan string) { f, err := os.open("1.txt") if err != nil { panic(fmt.sprintf("open file error:%s", err.error())) } //移动到文件末尾 f.seek(0, os.seek_end) reader := bufio.newreader(f) for { line, err := reader.readbytes('\n') fmt.println(err) if err == io.eof { time.sleep(time.second) continue } else if err != nil { panic("readbytes error:" + err.error()) } linestr := strings.trimspace(string(line)) readchannel <- linestr } }
使用tail包测试时,有re-open文件