os file builtins refactored with the package 'file'
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
// Copyright (c) 2024-2026 Celestino Amoroso (celestino.amoroso@gmail.com).
|
||||
// All rights reserved.
|
||||
|
||||
// reader.go
|
||||
package file
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"io"
|
||||
"os"
|
||||
)
|
||||
|
||||
type Reader struct {
|
||||
// fh *os.File
|
||||
handleBase
|
||||
reader *bufio.Reader
|
||||
}
|
||||
|
||||
func NewReader(fh *os.File) *Reader {
|
||||
return &Reader{handleBase: handleBase{fh: fh}, reader: bufio.NewReader(fh)}
|
||||
}
|
||||
|
||||
func OpenReader(filePath string) (r *Reader, err error) {
|
||||
var fh *os.File
|
||||
if fh, err = os.Open(filePath); err == nil {
|
||||
r = NewReader(fh)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (h *Reader) TypeName() string {
|
||||
return "fileReader"
|
||||
}
|
||||
|
||||
func (h *Reader) String() string {
|
||||
return "reader"
|
||||
}
|
||||
|
||||
func (h *Reader) Valid() bool {
|
||||
return h.handleBase.Valid() && h.reader != nil
|
||||
}
|
||||
|
||||
func (w *Reader) Close() (err error) {
|
||||
w.reader = nil
|
||||
err = w.handleBase.Close()
|
||||
return
|
||||
}
|
||||
|
||||
func (h *Reader) ReadByte() (b byte, err error) {
|
||||
if h.reader != nil {
|
||||
b, err = h.reader.ReadByte()
|
||||
} else {
|
||||
err = io.ErrClosedPipe
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (h *Reader) ReadAll() (p []byte, err error) {
|
||||
if h.reader != nil {
|
||||
p, err = io.ReadAll(h.reader)
|
||||
} else {
|
||||
err = io.ErrClosedPipe
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (h *Reader) ReadString(delim byte) (s string, err error) {
|
||||
if h.reader != nil {
|
||||
s, err = h.reader.ReadString(delim)
|
||||
} else {
|
||||
err = io.ErrClosedPipe
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (h *Reader) Reset() (err error) {
|
||||
if h.fh != nil {
|
||||
if _, err = h.fh.Seek(0, 0); err == nil {
|
||||
h.reader.Reset(h.fh)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user