os file builtins refactored with the package 'file'
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
// Copyright (c) 2024-2026 Celestino Amoroso (celestino.amoroso@gmail.com).
|
||||
// All rights reserved.
|
||||
|
||||
// writer.go
|
||||
package file
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
type Writer struct {
|
||||
// fh *os.File
|
||||
handleBase
|
||||
writer *bufio.Writer
|
||||
}
|
||||
|
||||
func NewWriter(fh *os.File) *Writer {
|
||||
return &Writer{handleBase: handleBase{fh: fh}, writer: bufio.NewWriter(fh)}
|
||||
}
|
||||
|
||||
func CreateWriter(filePath string) (w *Writer, err error) {
|
||||
var fh *os.File
|
||||
if fh, err = os.Create(filePath); err == nil {
|
||||
w = NewWriter(fh)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func AppendWriter(filePath string) (w *Writer, err error) {
|
||||
var fh *os.File
|
||||
if fh, err = os.OpenFile(filePath, os.O_APPEND|os.O_WRONLY, 0644); err == nil {
|
||||
w = NewWriter(fh)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (w *Writer) TypeName() string {
|
||||
return "fileWriter"
|
||||
}
|
||||
|
||||
func (w *Writer) String() string {
|
||||
return "writer"
|
||||
}
|
||||
|
||||
func (w *Writer) Valid() bool {
|
||||
return w.handleBase.Valid() && w.writer != nil
|
||||
}
|
||||
|
||||
func (w *Writer) Close() (err error) {
|
||||
var err1 error
|
||||
if w.writer != nil {
|
||||
err1 = w.Flush()
|
||||
w.writer = nil
|
||||
}
|
||||
if err = w.handleBase.Close(); err == nil {
|
||||
err = err1
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (w *Writer) Flush() (err error) {
|
||||
if w.writer != nil {
|
||||
err = w.writer.Flush()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (w *Writer) Write(args ...any) (n int, err error) {
|
||||
if w.writer != nil {
|
||||
n, err = fmt.Fprint(w.writer, args...)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (w *Writer) Writef(format string, args ...any) (n int, err error) {
|
||||
if w.writer != nil {
|
||||
n, err = fmt.Fprintf(w.writer, format, args...)
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user