From 4aba9148ce73c816649e1319476f9eb1131c48aa Mon Sep 17 00:00:00 2001 From: qydysky Date: Thu, 14 Nov 2024 22:15:16 +0800 Subject: [PATCH] 1 --- file/FileWR.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/file/FileWR.go b/file/FileWR.go index 3a639f2..d0d54ea 100644 --- a/file/FileWR.go +++ b/file/FileWR.go @@ -31,6 +31,7 @@ type File struct { file *os.File wr io.Writer rr io.Reader + sr io.Seeker l sync.RWMutex } @@ -245,6 +246,20 @@ func (t *File) Read(data []byte) (int, error) { return t.read().Read(data) } +func (t *File) Seek(offset int64, whence int) (int64, error) { + t.getRWCloser() + if t.Config.AutoClose { + defer t.Close() + } + + if !t.l.TryRLock() { + return 0, ErrFailToLock + } + defer t.l.RUnlock() + + return t.seek().Seek(offset, whence) +} + // stop after untilBytes // // data not include untilBytes @@ -705,3 +720,13 @@ func (t *File) read() io.Reader { } return t.rr } + +func (t *File) seek() io.Seeker { + if t.Config.AutoClose || t.rr == nil { + t.sr = io.Seeker(t.file) + if t.Config.Coder != nil { + panic("no support") + } + } + return t.sr +} -- 2.39.2