core

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Sep 6, 2026 License: Unlicense Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrReadLimitExceeded 表示读取的解压后内容超过了大小限制。
	ErrReadLimitExceeded = errors.New("读取内容超过大小限制")
	// ErrPackageClosed 表示 ZIP 包已经关闭。
	ErrPackageClosed = errors.New("ZIP 包已经关闭")
)

Functions

This section is empty.

Types

type Entry

type Entry struct {
	// Name 是 ZIP 条目的原始名称。
	Name string
	// Path 是去除开头斜杠后的包内查找路径。
	Path string
	// CompressedSize 是条目的压缩后大小。
	CompressedSize uint64
	// UncompressedSize 是条目的解压后大小。
	UncompressedSize uint64
	// Method 是 ZIP 压缩方法编号。
	Method uint16
	// CRC32 是条目的 CRC-32 校验值。
	CRC32 uint32
	// Modified 是条目的修改时间。
	Modified time.Time
	// Mode 是条目的文件模式。
	Mode fs.FileMode
	// IsDir 表示条目是否为目录。
	IsDir bool
	// contains filtered or unexported fields
}

Entry 描述 OFD ZIP 包中的一个条目。

type Package

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

Package 提供 OFD ZIP 包的条目索引和内容读取能力。

func OpenBytes

func OpenBytes(data []byte) (*Package, error)

OpenBytes 从字节数据打开 OFD ZIP 包。

func OpenFile

func OpenFile(filename string) (*Package, error)

OpenFile 从文件路径打开 OFD ZIP 包。 返回的 Package 使用完毕后应调用 Close。

func OpenReader

func OpenReader(reader io.Reader) (*Package, error)

OpenReader 从读取器中读取全部数据并打开 OFD ZIP 包。 调用方仍负责关闭传入的 reader。

func (*Package) Close

func (p *Package) Close() error

Close 关闭由 OpenFile 创建的 ZIP 包,并释放其文件句柄。 对 OpenBytes 和 OpenReader 创建的对象,Close 没有额外操作。

func (*Package) Entries

func (p *Package) Entries() []Entry

Entries 返回 ZIP 包条目的元数据快照,顺序与 ZIP 中的条目顺序一致。

func (*Package) Has

func (p *Package) Has(fileName string) bool

Has 判断 ZIP 包中是否存在指定名称的条目。

func (*Package) Lookup

func (p *Package) Lookup(fileName string) (Entry, bool)

Lookup 查找指定名称的 ZIP 条目元数据。 如果多个条目规范化后路径相同,返回 ZIP 中最后出现的条目;全部条目可通过 Entries 获取。

func (*Package) Open

func (p *Package) Open(fileName string) (io.ReadCloser, error)

Open 打开 ZIP 包内的条目,返回解压后的读取器。

func (*Package) OpenEntry

func (p *Package) OpenEntry(entry Entry) (io.ReadCloser, error)

OpenEntry 打开 Entries 返回的指定 ZIP 条目。 与 Open 不同,OpenEntry 不会因条目名称重复而切换到其他条目。

func (*Package) Read

func (p *Package) Read(fileName string) ([]byte, error)

Read 读取 ZIP 包内条目的全部解压后内容。

func (*Package) ReadLimit

func (p *Package) ReadLimit(fileName string, limit int64) ([]byte, error)

ReadLimit 读取 ZIP 包内条目的解压后内容,并限制最大字节数。 limit 为 0 时表示不限制。

func (*Package) ReadXML

func (p *Package) ReadXML(fileName string, target any) error

ReadXML 解析 ZIP 包内的 XML 文件。

func (*Package) ReadXMLLimit

func (p *Package) ReadXMLLimit(fileName string, target any, limit int64) error

ReadXMLLimit 解析 ZIP 包内的 XML 文件,并限制最大字节数。 limit 为 0 时表示不限制。

func (*Package) WalkEntries

func (p *Package) WalkEntries(fn func(Entry) bool) error

WalkEntries 按 ZIP 条目顺序遍历条目元数据。 回调返回 false 时停止遍历;该方法不会创建完整的条目快照或查找索引。

Jump to

Keyboard shortcuts

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