Documentation
¶
Overview ¶
Package sevenzip provides read access to 7-zip archives.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RegisterDecompressor ¶
func RegisterDecompressor(method []byte, dcomp Decompressor)
RegisterDecompressor allows custom decompressors for a specified method ID.
Types ¶
type CryptoReadCloser ¶ added in v1.2.0
CryptoReadCloser adds a Password method to decompressors.
type Decompressor ¶
type Decompressor func([]byte, uint64, []io.ReadCloser) (io.ReadCloser, error)
Decompressor describes the function signature that decompression/decryption methods must implement to return a new instance of themselves. They are passed any property bytes, the size of the stream and a slice of at least one io.ReadCloser's providing the stream(s) of bytes.
type File ¶
type File struct {
FileHeader
// contains filtered or unexported fields
}
A File is a single file in a 7-Zip archive. The file information is in the embedded FileHeader. The file content can be accessed by calling File.Open.
func (*File) Open ¶
func (f *File) Open() (io.ReadCloser, error)
Open returns an io.ReadCloser that provides access to the File's contents. Multiple files may be read concurrently.
type FileHeader ¶
type FileHeader struct {
Name string
Created time.Time
Accessed time.Time
Modified time.Time
Attributes uint32
CRC32 uint32
UncompressedSize uint64
// Stream is an opaque identifier representing the compressed stream
// that contains the file. Any File with the same value can be assumed
// to be stored within the same stream.
Stream int
// contains filtered or unexported fields
}
FileHeader describes a file within a 7-zip file.
func (*FileHeader) FileInfo ¶
func (h *FileHeader) FileInfo() iofs.FileInfo
FileInfo returns an [fs.FileInfo] for the FileHeader.
func (*FileHeader) Mode ¶
func (h *FileHeader) Mode() (mode iofs.FileMode)
Mode returns the permission and mode bits for the FileHeader.
type ReadCloser ¶
type ReadCloser struct {
Reader
// contains filtered or unexported fields
}
A ReadCloser is a Reader that must be closed when no longer needed.
func OpenReader ¶
func OpenReader(name string) (*ReadCloser, error)
OpenReader will open the 7-zip file specified by name and return a *ReadCloser. If name has a ".001" suffix it is assumed there are multiple volumes and each sequential volume will be opened.
Example ¶
package main
import (
"fmt"
"path/filepath"
"github.com/bodgit/sevenzip"
)
func main() {
r, err := sevenzip.OpenReader(filepath.Join("testdata", "multi.7z.001"))
if err != nil {
panic(err)
}
defer func() {
if err := r.Close(); err != nil {
panic(err)
}
}()
for _, file := range r.File {
fmt.Println(file.Name)
}
}
Output: 01 02 03 04 05 06 07 08 09 10
func OpenReaderWithPassword ¶
func OpenReaderWithPassword(name, password string) (*ReadCloser, error)
OpenReaderWithPassword will open the 7-zip file specified by name using password as the basis of the decryption key and return a *ReadCloser. If name has a ".001" suffix it is assumed there are multiple volumes and each sequential volume will be opened.
func (*ReadCloser) Close ¶
func (rc *ReadCloser) Close() error
Close closes the 7-zip file or volumes, rendering them unusable for I/O.
func (*ReadCloser) Volumes ¶ added in v1.4.0
func (rc *ReadCloser) Volumes() []string
Volumes returns the list of volumes that have been opened as part of the current archive.
type ReadError ¶ added in v1.6.0
type ReadError struct {
// Encrypted is a hint that there is encryption involved.
Encrypted bool
Err error
}
ReadError is used to wrap read I/O errors.
type Reader ¶
type Reader struct {
File []*File
// contains filtered or unexported fields
}
A Reader serves content from a 7-Zip archive.
func NewReader ¶
NewReader returns a new *Reader reading from r, which is assumed to have the given size in bytes.
func NewReaderWithPassword ¶
NewReaderWithPassword returns a new *Reader reading from r using password as the basis of the decryption key, which is assumed to have the given size in bytes.
Directories
¶
| Path | Synopsis |
|---|---|
|
internal
|
|
|
aes7z
Package aes7z implements the 7-zip AES decryption.
|
Package aes7z implements the 7-zip AES decryption. |
|
bcj2
Package bcj2 implements the BCJ2 filter for x86 binaries.
|
Package bcj2 implements the BCJ2 filter for x86 binaries. |
|
bra
Package bra implements the branch rewriting filter for binaries.
|
Package bra implements the branch rewriting filter for binaries. |
|
brotli
Package brotli implements the Brotli decompressor.
|
Package brotli implements the Brotli decompressor. |
|
bzip2
Package bzip2 implements the Bzip2 decompressor.
|
Package bzip2 implements the Bzip2 decompressor. |
|
deflate
Package deflate implements the Deflate decompressor.
|
Package deflate implements the Deflate decompressor. |
|
delta
Package delta implements the Delta filter.
|
Package delta implements the Delta filter. |
|
lz4
Package lz4 implements the LZ4 decompressor.
|
Package lz4 implements the LZ4 decompressor. |
|
lzma
Package lzma implements the LZMA decompressor.
|
Package lzma implements the LZMA decompressor. |
|
lzma2
Package lzma2 implements the LZMA2 decompressor.
|
Package lzma2 implements the LZMA2 decompressor. |
|
pool
Package pool implements the reader pooling.
|
Package pool implements the reader pooling. |
|
util
Package util implements various utility types and interfaces.
|
Package util implements various utility types and interfaces. |
|
zstd
Package zstd implements the Zstandard decompressor.
|
Package zstd implements the Zstandard decompressor. |