Функция bzip2.NewReader
Функция bzip2.NewReader создает новый io.Reader,
который позволяет читать данные, сжатые в формате bzip2.
В качестве единственного параметра она принимает исходный
io.Reader с данными в формате bzip2 и возвращает
объект для чтения распакованных данных. При возникновении
ошибки во время создания возвращается ошибка.
Синтаксис
bzip2.NewReader(r io.Reader) (io.Reader, error)
Пример
Давайте прочитаем содержимое файла, сжатого в формате bzip2:
package main
import (
"compress/bzip2"
"fmt"
"os"
)
func main() {
file, err := os.Open("data.bz2")
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
reader, err := bzip2.NewReader(file)
if err != nil {
fmt.Println("Error creating bzip2 reader:", err)
return
}
buf := make([]byte, 1024)
for {
n, err := reader.Read(buf)
if n > 0 {
fmt.Print(string(buf[:n]))
}
if err != nil {
break
}
}
}
Результат выполнения кода (содержимое распакованного файла):
"Hello, bzip2 world!"
Пример
Давайте прочитаем данные из строки, сжатой в bzip2:
package main
import (
"bytes"
"compress/bzip2"
"fmt"
"io"
)
func main() {
// Сжатые данные (пример)
compressedData := []byte{
0x42, 0x5a, 0x68, 0x31, 0x41, 0x59, 0x26, 0x53,
0x59, 0x0d, 0x65, 0x50, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
}
reader := bzip2.NewReader(bytes.NewReader(compressedData))
decompressed, err := io.ReadAll(reader)
if err != nil {
fmt.Println("Error decompressing:", err)
return
}
fmt.Println(string(decompressed))
}
Результат выполнения кода:
"bzip2 data"
Смотрите также
-
функцию
compress/bzip2,
пакет для работы с форматом bzip2 -
функцию
gzip.NewReader,
которая создает ридер для формата gzip -
функцию
zlib.NewReader,
которая создает ридер для формата zlib -
функцию
flate.NewReader,
которая создает ридер для формата flate