base_linereader.go 654 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package reader
  2. import (
  3. "bufio"
  4. "io"
  5. )
  6. type LineReader struct {
  7. filename string
  8. reader *bufio.Reader
  9. linecount int
  10. }
  11. func NewLineReader(filename string, reader io.Reader) *LineReader {
  12. return &LineReader{
  13. filename: filename,
  14. reader: bufio.NewReader(reader),
  15. }
  16. }
  17. func (br *LineReader) ReadLine() (line string, linecount int, eof bool, err error) {
  18. var linebs []byte
  19. var isprefix bool = true
  20. for isprefix {
  21. linebs, isprefix, err = br.reader.ReadLine()
  22. if err != nil {
  23. if err == io.EOF {
  24. err = nil
  25. eof = true
  26. break
  27. }
  28. return
  29. }
  30. line += string(linebs)
  31. }
  32. br.linecount++
  33. linecount = br.linecount
  34. return
  35. }