- Notifications
You must be signed in to change notification settings - Fork5
StoicPerlman/fls
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Seek to any line in a file without reading the whole file into memory. Works similar to os.File.Seek.
https://godoc.org/github.com/StoicPerlman/fls
import"github.com/stoicperlman/fls"// use fls.LineFile(file *os.File) *File// for files opened from os packagef,_:=os.OpenFile("test.log",os.O_CREATE|os.O_RDONLY,0600)deferf.Close()file:=fls.LineFile(f)pos,err:=file.SeekLine(-10,io.SeekEnd)// use os file wrappers to open without os package// fls.OpenFile(name string, flag int, perm os.FileMode) (*File, error)f,err:=fls.OpenFile("test.log",os.O_CREATE|os.O_WRONLY,0600)deferf.Close()pos,err:=f.SeekLine(-10,io.SeekEnd)
func (file *File) SeekLine(lines int64, whence int) (int64, error)
- positive lines will move forward in file
- 0 lines will move to begining of line
- negative lines will move backwards in file
file.SeekLine(-1,io.SeekStart)// return EOFfile.SeekLine(0,io.SeekStart)// return begining line 1file.SeekLine(1,io.SeekStart)// return begining line 2file.SeekLine(-1,io.SeekCurrent)// return begining of previous linefile.SeekLine(0,io.SeekCurrent)// return begining of current linefile.SeekLine(1,io.SeekCurrent)// return begining of next linefile.SeekLine(-1,io.SeekEnd)// return begining of second to last linefile.SeekLine(0,io.SeekEnd)// return begining of last linefile.SeekLine(1,io.SeekEnd)// return EOF