golang

golang brotli 브로틀리 압축 해제

kimbs0301 2024. 10. 6. 15:19

brotli 모듈 저장소
github.com/andybalholm/brotli

 

main_test.go

package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
	"testing"

	"github.com/andybalholm/brotli"
)

// TestDecompress
func TestDecompress(t *testing.T) {
	inFile, err := os.Open("C:/files/big-text-file.txt.br")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer inFile.Close()
	outFile, err := os.Create("C:/files/big-text-file")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer outFile.Close()

	inFileReader := brotli.NewReader(inFile)

	outFileWriter := bufio.NewWriterSize(outFile, 4096)

	buf := make([]byte, 4096, 4096)
	for {
		n, err := inFileReader.Read(buf)
		if err != nil {
			if err == io.EOF {
				fmt.Printf("ok n: %d\n", n)
			} else {
				fmt.Printf("inFileReader.Read() method execution error, error is: %v\n", err)
			}
			break
		}

		_, err = outFileWriter.Write(buf[:n])
		if err != nil {
			fmt.Printf("outFileWriter.Write() method execution error, error is: %v\n", err)
			break
		}
		if err := outFileWriter.Flush(); err != nil {
			fmt.Printf("outFileWriter.Flush() method execution error, error is: %v\n", err)
			break
		}
	}
}

'golang' 카테고리의 다른 글

golang generic 사용으로 empty interface boxing, unboxing 코드 수정  (1) 2024.10.06
golang gzip 압축 해제  (0) 2024.10.06
golang gzip 압축  (0) 2024.10.01
golang brotli 브로틀리 압축  (0) 2024.10.01
golang ToCamelCase ToPascalCase  (0) 2024.10.01