...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package fileutil
16
17 import (
18 "bufio"
19 "io"
20 "io/fs"
21 "os"
22 )
23
24
25 type FileReader interface {
26 io.Reader
27 FileInfo() (fs.FileInfo, error)
28 }
29
30 type fileReader struct {
31 *os.File
32 }
33
34 func NewFileReader(f *os.File) FileReader {
35 return &fileReader{f}
36 }
37
38 func (fr *fileReader) FileInfo() (fs.FileInfo, error) {
39 return fr.Stat()
40 }
41
42
43 type FileBufReader struct {
44 *bufio.Reader
45 fi fs.FileInfo
46 }
47
48 func NewFileBufReader(fr FileReader) *FileBufReader {
49 bufReader := bufio.NewReader(fr)
50 fi, err := fr.FileInfo()
51 if err != nil {
52
53 panic(err)
54 }
55 return &FileBufReader{bufReader, fi}
56 }
57
58 func (fbr *FileBufReader) FileInfo() fs.FileInfo {
59 return fbr.fi
60 }
61
View as plain text