Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
kardolus
GitHub Repository: kardolus/chatgpt-cli
Path: blob/main/internal/fsio/fsio.go
3447 views
1
package fsio
2
3
import "os"
4
5
const DefaultBufferSize = 512
6
7
type Reader interface {
8
Open(name string) (*os.File, error)
9
ReadFile(name string) ([]byte, error)
10
ReadBufferFromFile(file *os.File) ([]byte, error)
11
}
12
13
type Writer interface {
14
Create(name string) (*os.File, error)
15
Write(file *os.File, buf []byte) error
16
}
17
18
type RealReader struct {
19
BufferSize int
20
}
21
22
func NewRealReader(bufferSize int) *RealReader {
23
return &RealReader{BufferSize: bufferSize}
24
}
25
26
func (r *RealReader) Open(name string) (*os.File, error) { return os.Open(name) }
27
28
func (r *RealReader) ReadFile(name string) ([]byte, error) { return os.ReadFile(name) }
29
30
func (r *RealReader) ReadBufferFromFile(file *os.File) ([]byte, error) {
31
buf := make([]byte, r.BufferSize)
32
_, err := file.Read(buf)
33
return buf, err
34
}
35
36
type RealWriter struct{}
37
38
func (w *RealWriter) Create(name string) (*os.File, error) { return os.Create(name) }
39
40
func (w *RealWriter) Write(file *os.File, buf []byte) error {
41
_, err := file.Write(buf)
42
return err
43
}
44
45