tempfile

package
v2.0.42 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 18, 2025 License: MIT Imports: 14 Imported by: 0

Documentation

Overview

Package tempfile 提供临时文件的管理功能,包括文件的创建、读写、缓存和清理

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckFileExistsAndInfo

func CheckFileExistsAndInfo(key string) (fs.FileInfo, bool, error)

CheckFileExistsAndInfo 检查与给定键关联的临时文件是否存在并返回其文件信息 参数:

  • key: string 用于检索临时文件的唯一键

返回值:

  • fs.FileInfo: 文件信息(如果存在)
  • bool: 文件是否存在
  • error: 如果检查过程中发生错误,返回相应的错误信息

func CleanupTempFiles added in v2.0.28

func CleanupTempFiles(dirPath ...string) error

CleanupTempFiles 清理所有临时文件 参数:

  • dirPath: string (可选) 指定要清理的临时目录,如果为空则清理系统临时目录中的defs_tempfile_*文件

返回值:

  • error: 如果清理过程中发生错误,返回相应的错误信息

func Delete

func Delete(key string) error

Delete 根据键删除临时文件 参数:

  • key: string 用于检索要删除的临时文件的唯一键

返回值:

  • error: 如果删除过程中发生错误,返回相应的错误信息

func Exists

func Exists(key string) (bool, error)

Exists 检查与给定键关联的临时文件是否存在 参数:

  • key: string 用于检索临时文件的唯一键

返回值:

  • bool: 文件是否存在
  • error: 如果检查过程中发生错误,返回相应的错误信息

func GetFile

func GetFile(key string) (*os.File, error)

GetFile 获取与键关联的文件句柄 参数:

  • key: string 用于检索临时文件的唯一键

返回值:

  • *os.File: 文件句柄
  • error: 如果获取过程中发生错误,返回相应的错误信息

func GetUploadsDir added in v2.0.32

func GetUploadsDir() string

GetUploadsDir 返回上传文件的临时目录 返回值:

  • string: 上传文件的临时目录路径

func OnlyRead

func OnlyRead(key string) ([]byte, error)

OnlyRead 根据键读取临时文件的内容,并在读取成功后删除文件 参数:

  • key: string 用于检索临时文件的唯一键

返回值:

  • []byte: 读取的文件内容
  • error: 如果读取过程中发生错误,返回相应的错误信息

func Read

func Read(key string) ([]byte, error)

Read 根据键读取临时文件的内容,并在读取成功后删除文件 参数:

  • key: string 用于检索临时文件的唯一键

返回值:

  • []byte: 读取的文件内容
  • error: 如果读取过程中发生错误,返回相应的错误信息

func ReadEncryptedSegment added in v2.0.28

func ReadEncryptedSegment(readKey string) ([]byte, error)

ReadEncryptedSegment 读取加密的分片数据 参数:

  • readKey: WriteEncryptedSegment返回的读取标识

返回值:

  • []byte: 加密的数据
  • error: 读取失败时返回错误

func Size

func Size(key string) (int64, error)

Size 返回与给定键关联的临时文件的大小 参数:

  • key: string 用于检索临时文件的唯一键

返回值:

  • int64: 文件大小(字节)
  • error: 如果获取文件大小过程中发生错误,返回相应的错误信息

func Write

func Write(key string, value []byte) error

Write 将值写入临时文件,并将文件名与键关联 参数:

  • key: string 用于关联临时文件的唯一键
  • value: []byte 要写入临时文件的数据

返回值:

  • error: 如果写入过程中发生错误,返回相应的错误信息

func WriteBatch

func WriteBatch(segments map[string][]byte) error

WriteBatch 批量写入多个临时文件 参数:

  • segments: map[string][]byte 键为分片ID,值为分片数据的映射

返回值:

  • error: 如果写入过程中发生错误,返回相应的错误信息

func WriteBatchOptimized added in v2.0.28

func WriteBatchOptimized(segments map[string][]byte) error

WriteBatchOptimized 优化批量写入 参数:

  • segments: map[string][]byte 键为分片ID,值为分片数据的映射

返回值:

  • error: 如果写入过程中发生错误,返回相应的错误信息

func WriteBatchStream

func WriteBatchStream(segments map[string]io.Reader) error

WriteBatchStream 批量写入多个临时文件,使用流式处理 参数:

  • segments: map[string]io.Reader 键为分片ID,值为分片数据的读取器

返回值:

  • error: 如果写入过程中发生错误,返回相应的错误信息

func WriteEncryptedSegment added in v2.0.28

func WriteEncryptedSegment(segmentID string, reader io.Reader, isRsCodes bool, taskID ...string) (string, error)

WriteEncryptedSegment 写入加密的分片数据 参数:

  • segmentID: string 分片ID
  • reader: io.Reader 要写入的数据读取器
  • isRsCodes: bool 是否是RsCodes
  • taskID: string (可选) 任务ID,用于隔离不同上传任务的临时文件

返回值:

  • string: 读取标识

func WriteShards

func WriteShards(fileID string, shards []io.Writer) error

WriteShards 将多个分片写入临时文件 参数:

  • fileID: string 文件ID
  • shards: []io.Writer 分片写入器切片

返回值:

  • error: 如果写入过程中发生错误,返回相应的错误信息

func WriteStream

func WriteStream(key string, reader io.Reader) error

WriteStream 将 io.Reader 的内容写入临时文件,并将文件名与键关联 参数:

  • key: string 用于关联临时文件的唯一键
  • reader: io.Reader 要写入临时文件的数据读取器

返回值:

  • error: 如果写入过程中发生错误,返回相应的错误信息

func WriteStreamOptimized added in v2.0.28

func WriteStreamOptimized(key string, reader io.Reader) error

WriteStreamOptimized 优化的流式写入

Types

type BufferPool added in v2.0.28

type BufferPool struct {
	// contains filtered or unexported fields
}

BufferPool 提供多级缓冲区池,通过复用不同大小的缓冲区来减少内存分配

func NewBufferPool added in v2.0.28

func NewBufferPool() *BufferPool

NewBufferPool 创建并初始化一个新的缓冲区池 返回值:

  • *BufferPool: 初始化完成的缓冲区池

func (*BufferPool) Get added in v2.0.28

func (p *BufferPool) Get(size int64) *bytes.Buffer

Get 根据数据大小获取合适的缓冲区 参数:

  • size: 需要的缓冲区大小(字节)

返回值:

  • *bytes.Buffer: 获取到的缓冲区,容量>=size

func (*BufferPool) Put added in v2.0.28

func (p *BufferPool) Put(buf *bytes.Buffer)

Put 将使用完的缓冲区归还到池中 参数:

  • buf: 要归还的缓冲区

type Config added in v2.0.28

type Config struct {
	MaxFileSize     int64         // 单个文件的最大大小(字节)
	MaxFiles        int           // 允许的最大文件数量
	MinFileAge      time.Duration // 文件的最小保留时间(默认1小时)
	MaxFileAge      time.Duration // 文件的最大保留时间(默认24小时)
	CleanupInterval time.Duration // 清理检查的时间间隔
	TempDir         string        // 临时文件存储目录
}

Config 定义临时文件管理器的配置参数

type FilePool added in v2.0.28

type FilePool struct {
	// contains filtered or unexported fields
}

FilePool 管理临时文件池

func NewFilePool added in v2.0.28

func NewFilePool(config Config) *FilePool

NewFilePool 创建新的文件池

func (*FilePool) Acquire added in v2.0.28

func (p *FilePool) Acquire() (*TempFile, error)

Acquire 获取一个临时文件

func (*FilePool) Release added in v2.0.28

func (p *FilePool) Release(tf *TempFile) error

Release 释放临时文件

type TempFile added in v2.0.28

type TempFile struct {
	// contains filtered or unexported fields
}

TempFile 表示一个临时文件实例及其状态

func (*TempFile) Read added in v2.0.28

func (tf *TempFile) Read(p []byte) (n int, err error)

Read 优化读取逻辑 参数:

  • p: []byte 要读取的数据

返回值:

  • int: 读取的字节数
  • error: 如果读取过程中发生错误,返回相应的错误信息

func (*TempFile) Write added in v2.0.28

func (tf *TempFile) Write(p []byte) (n int, err error)

Write 优化写入逻辑 参数:

  • p: []byte 要写入的数据

返回值:

  • int: 写入的字节数
  • error: 如果写入过程中发生错误,返回相应的错误信息

type TempFileError added in v2.0.28

type TempFileError struct {
	Op   string // 发生错误的操作名称
	Path string // 相关的文件路径
	Err  error  // 原始错误信息
}

TempFileError 定义临时文件操作的错误信息

func (*TempFileError) Error added in v2.0.28

func (e *TempFileError) Error() string

Error 实现error接口,提供格式化的错误信息

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL