// NewWriter returns a new table writer for the file. Closing the writer will // close the file. func NewWriter(f db.File, o *db.Options) *Writer { w := &Writer{ closer: f, blockRestartInterval: o.GetBlockRestartInterval(), blockSize: o.GetBlockSize(), cmp: o.GetComparer(), compression: o.GetCompression(), prevKey: make([]byte, 0, 256), restarts: make([]uint32, 0, 256), } if f == nil { w.err = errors.New("leveldb/table: nil file") return w } // If f does not have a Flush method, do our own buffering. type flusher interface { Flush() error } if _, ok := f.(flusher); ok { w.writer = f } else { w.bufWriter = bufio.NewWriter(f) w.writer = w.bufWriter } return w }