golang

golang gzip 압축 해제

kimbs0301 2024. 10. 6. 15:20

main_test.go

package main

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

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

	inFileReader, err := gzip.NewReader(inFile)
	if err != nil {
		fmt.Printf("gzip.NewReader() method execution error, error is: %v\n", err)
		return
	}

	outFileWriter := bufio.NewWriterSize(outFile, 4096)

	buf := make([]byte, 4096, 4096)
	for {
		n, err := inFileReader.Read(buf)
		if err != nil {
			if err == io.EOF || err == io.ErrUnexpectedEOF {
				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
		}
	}
}