| 17 | } |
| 18 | |
| 19 | func newFileRecovery(path string, bufSize int) (fr *fileRecovery, err error) { |
| 20 | fd, err := os.OpenFile(path, os.O_RDWR, os.ModePerm) |
| 21 | if err != nil { |
| 22 | return nil, err |
| 23 | } |
| 24 | bufSize = calBufferSize(bufSize) |
| 25 | fileInfo, err := fd.Stat() |
| 26 | if err != nil { |
| 27 | return nil, err |
| 28 | } |
| 29 | return &fileRecovery{ |
| 30 | fd: fd, |
| 31 | reader: bufio.NewReaderSize(fd, bufSize), |
| 32 | size: fileInfo.Size(), |
| 33 | closed: false, |
| 34 | }, nil |
| 35 | } |
| 36 | |
| 37 | // readEntry will read an Entry from disk. |
| 38 | func (fr *fileRecovery) readEntry(off int64) (e *core.Entry, err error) { |