Go 언어 tar 파일 압축과 해제 배워보기
오늘은 Go 언어 기본 패키지에 포함되있는 archive/tar을 이용하여 실습해보려 합니다.
package main
import (
"archive/tar"
"bytes"
"io"
"os"
)
가장 기본이 되는 archive/tar 패키지를 가져오고, 버퍼를 만들기 위해 bytes패키지도 가져옵니다.
io와 os패키지도 터미널에 출력하기 위해 가져옵니다.
func main() {
var buffer bytes.Buffer
tarWriter := tar.NewWriter(&buffer)
defer tarWriter.Close()
버퍼를 만들어서 Writer를 생성하기 위한 준비를 합니다.
defer 키워드로 Writer의 일이 끝날 때에 닫도록 작성합니다.
var files = []struct {
Name, Body string
}{
{"test.txt", "test file"},
}
파일을 익명 구조체로 구성하여 내용을 채워줍니다.
for _, file := range files {
tarHeader := &tar.Header{
Name: file.Name,
Mode: 0600,
Size: int64(len(file.Body)),
}
tarWriter.WriteHeader(tarHeader)
tarWriter.Write([]byte(file.Body))
}
for문으로 순회하면서 tar의 헤더를 작성해줍니다.
tarReader := tar.NewReader(&buffer)
for {
io.Copy(os.Stdout, tarReader)
_, err := tarReader.Next()
if err == io.EOF {
break
}
}
}
이전에 만들어둔 버퍼로 Reader를 생성하여 출력합니다.
간단한 예외처리로 버퍼의 끝이 보이면 멈추도록 합니다.
Written on October 17, 2018