[go] go 언어에서의 데이터 압축 및 압축 해제를 위한 os 패키지 활용
Go 언어에서 파일을 압축하고 해제하는 작업은 매우 중요합니다. 이러한 작업을 수행하기 위해 Go 표준 라이브러리의 os
패키지를 사용할 수 있습니다.
이 블로그 게시물에서는 Go에서 파일 압축 및 압축 해제를 수행하기 위한 방법을 알아보겠습니다.
1. 파일 압축하기
파일을 압축할 때, archive/zip
패키지를 사용하여 새로운 .zip 파일을 생성할 수 있습니다.
package main
import (
"archive/zip"
"log"
"os"
)
func main() {
// 압축할 파일 목록
files := []string{"file1.txt", "file2.txt", "file3.txt"}
// zip 파일 생성
zipfile, err := os.Create("files.zip")
if err != nil {
log.Fatal(err)
}
defer zipfile.Close()
// zip writer 생성
zipWriter := zip.NewWriter(zipfile)
defer zipWriter.Close()
// 파일을 압축
for _, file := range files {
err = addFileToZip(zipWriter, file)
if err != nil {
log.Fatal(err)
}
}
}
func addFileToZip(zipWriter *zip.Writer, filename string) error {
fileToZip, err := os.Open(filename)
if err != nil {
return err
}
defer fileToZip.Close()
// 파일 정보 구성
info, err := fileToZip.Stat()
if err != nil {
return err
}
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
header.Name = filename
header.Method = zip.Deflate
// 파일을 zip 파일에 추가
writer, err := zipWriter.CreateHeader(header)
if err != nil {
return err
}
_, err = io.Copy(writer, fileToZip)
return err
}
위의 예제에서는 file1.txt
, file2.txt
, file3.txt
파일을 files.zip
이라는 한 개의 .zip 파일로 압축하는 예시를 보여주고 있습니다.
2. 파일 압축 해제하기
archive/zip
패키지를 사용하여 .zip 파일을 압축 해제할 수 있습니다.
package main
import (
"archive/zip"
"log"
"os"
)
func main() {
// 압축 해제할 zip 파일
zipfile, err := zip.OpenReader("files.zip")
if err != nil {
log.Fatal(err)
}
defer zipfile.Close()
for _, file := range zipfile.File {
// 파일 압축 해제
err = extractFile(file)
if err != nil {
log.Println(err)
}
}
}
func extractFile(file *zip.File) error {
// 압축 해제
reader, err := file.Open()
if err != nil {
return err
}
defer reader.Close()
// 압축을 해제한 파일 생성
newFile, err := os.Create(file.Name)
if err != nil {
return err
}
defer newFile.Close()
// 압축을 해제한 파일을 새로 생성한 파일에 복사
_, err = io.Copy(newFile, reader)
if err != nil {
return err
}
return nil
}
위의 예제에서는 files.zip
이라는 .zip 파일을 압축 해제하는 방법을 보여주고 있습니다.
이처럼 Go 언어에서는 os
패키지를 이용하여 파일을 압축 및 압축 해제할 수 있습니다.
결론
이 블로그 게시물에서는 Go 언어에서 파일을 압축하고 압축을 해제하는 방법을 알아보았습니다. os
패키지를 사용하면 간단하고 쉽게 파일을 압축하고 압축을 해제할 수 있습니다. 이를 통해 파일 처리 작업을 보다 효율적으로 수행할 수 있습니다.
참고 자료
- Go 공식 문서: https://golang.org/pkg/os/
- Go 공식 GitHub 저장소: https://github.com/golang/go