1 回答

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以通過(guò)刪除來(lái)簡(jiǎn)化您的代碼github.com/TomOnTime/utfutil
(這是對(duì) 的一個(gè)非常薄的包裝golang.org/x/text/encoding/unicode
)。鏈接任務(wù)通常也比嘗試一次完成所有事情更簡(jiǎn)單;在這里,我從這個(gè)答案tailReader
中借用(稍作改動(dòng))。
注意:我只是非常快速地測(cè)試了下面的內(nèi)容(并且手頭沒(méi)有“Eve Online”日志文件)。
package main
import (
"bufio"
"fmt"
"io"
"os"
"time"
"golang.org/x/text/encoding/unicode"
)
func main() {
file, err := newTailReader("./Local_20220707_170827_1006197774.txt")
if err != nil {
return
}
defer file.Close()
utf := unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM)
reader := bufio.NewReader(utf.NewDecoder().Reader(file))
for {
line, err := reader.ReadString('\n')
if err != nil {
fmt.Println(err)
break
}
fmt.Printf(string(line))
}
}
// Code copied from https://stackoverflow.com/a/31122253/11810946
// and modified to output contents of file before beginning to 'tail'
type tailReader struct {
io.ReadCloser
}
func (t tailReader) Read(b []byte) (int, error) {
for {
n, err := t.ReadCloser.Read(b)
if n > 0 {
return n, nil
} else if err != io.EOF {
return n, err
}
time.Sleep(10 * time.Millisecond)
}
}
func newTailReader(fileName string) (tailReader, error) {
f, err := os.Open(fileName)
if err != nil {
return tailReader{}, err
}
return tailReader{f}, nil
}
- 1 回答
- 0 關(guān)注
- 125 瀏覽
添加回答
舉報(bào)