feat: 新增统一文件模块,统一文件操作

This commit is contained in:
meilin.huang
2024-10-21 22:27:42 +08:00
parent 6343173cf8
commit ea3c70a8a8
71 changed files with 1642 additions and 1216 deletions

View File

@@ -9,10 +9,16 @@ import (
const DefaultDateTimeFormat = "2006-01-02 15:04:05"
// DefaultFormat 使用默认格式进行格式化: 2006-01-02 15:04:05
func DefaultFormat(time time.Time) string {
return time.Format(DefaultDateTimeFormat)
}
// TimeNo 获取当前时间编号格式为20060102150405
func TimeNo() string {
return time.Now().Format("20060102150405")
}
func NewNullTime(t time.Time) NullTime {
return NullTime{
NullTime: sql.NullTime{

View File

@@ -1,51 +0,0 @@
package writer
import (
"io"
"os"
"path/filepath"
)
type FileWriter struct {
tryFlushCount int
writer *os.File
aborted bool
}
func NewFileWriter(filePath string) *FileWriter {
if filePath == "" {
panic("filePath is empty")
}
// 使用filepath.Dir函数提取文件夹路径
dir := filepath.Dir(filePath)
if dir != "" {
// 检查文件夹路径,不存在则创建
if _, err := os.Stat(dir); os.IsNotExist(err) {
err = os.MkdirAll(dir, os.ModePerm)
if err != nil {
panic(err)
}
}
}
fw, err := os.Create(filePath)
if err != nil {
panic(err)
}
return &FileWriter{writer: fw}
}
func (f *FileWriter) Close() {
f.writer.Close()
}
func (f *FileWriter) TryFlush() {
}
func (f *FileWriter) Write(b []byte) (n int, err error) {
return f.writer.Write(b)
}
func (f *FileWriter) WriteString(data string) {
io.WriteString(f.writer, data)
}

View File

@@ -1,10 +0,0 @@
package writer
import "io"
type CustomWriter interface {
io.Writer
WriteString(data string)
Close()
TryFlush()
}

View File

@@ -0,0 +1,26 @@
package writerx
import "io"
type CountingWriteCloser struct {
w io.WriteCloser
n int64 // 已写入的字节数
}
func (c *CountingWriteCloser) Write(p []byte) (int, error) {
n, err := c.w.Write(p)
c.n += int64(n)
return n, err
}
func (c *CountingWriteCloser) Close() error {
return c.w.Close()
}
func (c *CountingWriteCloser) BytesWritten() int64 {
return c.n
}
func NewCountingWriteCloser(writer io.WriteCloser) *CountingWriteCloser {
return &CountingWriteCloser{w: writer}
}

View File

@@ -1,4 +1,4 @@
package writer
package writerx
import (
"compress/gzip"
@@ -38,8 +38,8 @@ func (g *GzipWriter) Write(p []byte) (n int, err error) {
return
}
func (g *GzipWriter) Close() {
g.writer.Close()
func (g *GzipWriter) Close() error {
return g.writer.Close()
}
func (g *GzipWriter) TryFlush() {

View File

@@ -0,0 +1,21 @@
package writerx
import (
"io"
)
type StringWriter struct {
io.WriteCloser
}
func (sw *StringWriter) WriteString(s string) (n int, err error) {
return sw.WriteCloser.Write([]byte(s))
}
func (sw *StringWriter) Close() error {
return sw.WriteCloser.Close()
}
func NewStringWriter(writer io.WriteCloser) *StringWriter {
return &StringWriter{WriteCloser: writer}
}