[go] 파일 압축
Go 언어는 간단하고 효율적인 파일 압축을 위한 표준 라이브러리를 제공합니다. 이를 사용하여 파일을 압축하고 해제할 수 있습니다. 이번 포스트에서는 Go 언어를 사용하여 파일을 압축하는 방법에 대해 알아보겠습니다.
파일 압축하기
Go 언어에서 파일을 압축하기 위해서는 archive/zip
패키지를 사용합니다. 아래는 파일을 압축하는 예제 코드입니다.
package main
import (
"archive/zip"
"fmt"
"io"
"os"
)
func main() {
fileToCompress, err := os.Open("file.txt")
if err != nil {
panic(err)
}
defer fileToCompress.Close()
output, err := os.Create("compressed.zip")
if err != nil {
panic(err)
}
defer output.Close()
zipWriter := zip.NewWriter(output)
defer zipWriter.Close()
fileInfo, err := fileToCompress.Stat()
if err != nil {
panic(err)
}
header, err := zip.FileInfoHeader(fileInfo)
if err != nil {
panic(err)
}
header.Name = fileToCompress.Name()
writer, err := zipWriter.CreateHeader(header)
if err != nil {
panic(err)
}
io.Copy(writer, fileToCompress)
fmt.Println("File compressed successfully")
}
위의 코드는 file.txt
파일을 compressed.zip
으로 압축하는 예제입니다.
파일 해제하기
위에서 압축한 파일을 해제하는 방법은 아래와 같습니다.
package main
import (
"archive/zip"
"fmt"
"io"
"os"
)
func main() {
zipFile, err := zip.OpenReader("compressed.zip")
if err != nil {
panic(err)
}
defer zipFile.Close()
for _, file := range zipFile.File {
zippedFile, err := file.Open()
if err != nil {
panic(err)
}
defer zippedFile.Close()
targetFile, err := os.Create(file.Name)
if err != nil {
panic(err)
}
defer targetFile.Close()
_, err = io.Copy(targetFile, zippedFile)
if err != nil {
panic(err)
}
}
fmt.Println("File decompressed successfully")
}
위의 코드는 compressed.zip
파일을 해제하여 원본 파일을 복원하는 예제입니다.
이렇게 간단하게 Go 언어를 사용하여 파일을 압축하고 해제할 수 있습니다. Go 언어의 강력한 표준 라이브러리를 이용하여 파일 압축과 해제를 쉽게 수행할 수 있습니다.