golang

golang gzip 압축

kimbs0301 2024. 10. 1. 10:35

main_test.go

package main

import (
	"bufio"
	"compress/gzip"
	"fmt"
	"io"
	"os"
	"testing"
)

// TestGzipCompression
func TestGzipCompression(t *testing.T) {
	inFile, err := os.Open("C:/tmp/Isaac.Newton-Opticks.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer inFile.Close()
	outFile, err := os.Create("C:/tmp/Isaac.Newton-Opticks.txt.gz")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer outFile.Close()

	inFileReader := bufio.NewReader(inFile)

	compressionWriter, err := gzip.NewWriterLevel(outFile, gzip.BestCompression)
	if err != nil {
		fmt.Printf("gzip.NewWriterLevel() method execution error, error is: %v\n", err)
		return
	}

	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
		}
	}

	//inFile.Close()
	//outFile.Close()
}

 

사이즈 1.5 MB 텍스트 파일 압축 용량
524KB BestSpeed
376KB DefaultCompression
372KB BestCompression

 

'golang' 카테고리의 다른 글

golang gzip 압축 해제  (0) 2024.10.06
golang brotli 브로틀리 압축 해제  (0) 2024.10.06
golang brotli 브로틀리 압축  (0) 2024.10.01
golang ToCamelCase ToPascalCase  (0) 2024.10.01
golang UTC 타임존 변경  (0) 2024.07.08