brotli 모듈 저장소
github.com/andybalholm/brotli
main_test.go
package main
import (
"bufio"
"fmt"
"io"
"os"
"testing"
"github.com/andybalholm/brotli"
)
// TestBrotliCompression
func TestBrotliCompression(t *testing.T) {
inFile, err := os.Open("C:/files/big-text-file.txt")
if err != nil {
fmt.Println(err)
return
}
defer inFile.Close()
outFile, err := os.Create("C:/files/big-text-file.txt.br")
if err != nil {
fmt.Println(err)
return
}
defer outFile.Close()
inFileReader := bufio.NewReader(inFile)
compressionWriter := brotli.NewWriterLevel(outFile, brotli.BestCompression)
buf := make([]byte, 4096, 4096)
for {
n, err := inFileReader.Read(buf)
if err != nil {
if err == io.EOF {
fmt.Println("ok")
} else {
fmt.Printf("inFileReader.Read() method execution error, error is: %v\n", err)
}
break
}
_, err = compressionWriter.Write(buf[:n])
if err != nil {
fmt.Printf("compressionWriter.Write() method execution error, error is: %v\n", err)
break
}
if err := compressionWriter.Flush(); err != nil {
fmt.Printf("compressionWriter.Flush() method execution error, error is: %v\n", err)
break
}
}
}
사이즈 1.5 MB 텍스트 파일 압축 용량
584KB BestSpeed
344KB DefaultCompression
312KB BestCompression
BestCompression 압축의 경우 압축 시간이 오래 걸린다.
'golang' 카테고리의 다른 글
golang brotli 브로틀리 압축 해제 (0) | 2024.10.06 |
---|---|
golang gzip 압축 (0) | 2024.10.01 |
golang ToCamelCase ToPascalCase (0) | 2024.10.01 |
golang UTC 타임존 변경 (0) | 2024.07.08 |
golang uuid (0) | 2024.07.08 |