2023-08-27 21:14:23 +08:00
|
|
|
package model
|
|
|
|
|
2025-07-12 17:57:54 +08:00
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"io"
|
|
|
|
)
|
2023-08-27 21:14:23 +08:00
|
|
|
|
|
|
|
// File is basic file level accessing interface
|
|
|
|
type File interface {
|
|
|
|
io.Reader
|
|
|
|
io.ReaderAt
|
|
|
|
io.Seeker
|
|
|
|
}
|
2025-07-12 17:57:54 +08:00
|
|
|
type FileCloser struct {
|
|
|
|
File
|
|
|
|
io.Closer
|
|
|
|
}
|
|
|
|
|
|
|
|
func (f *FileCloser) Close() error {
|
|
|
|
var errs []error
|
|
|
|
if clr, ok := f.File.(io.Closer); ok {
|
|
|
|
errs = append(errs, clr.Close())
|
|
|
|
}
|
|
|
|
if f.Closer != nil {
|
|
|
|
errs = append(errs, f.Closer.Close())
|
|
|
|
}
|
|
|
|
return errors.Join(errs...)
|
|
|
|
}
|
|
|
|
|
|
|
|
type FileRangeReader struct {
|
|
|
|
RangeReaderIF
|
|
|
|
}
|