[go] 파일 경로에서 파일 압축하기
Golang은 경로에 있는 파일들을 압축하는 기능을 제공하는 많은 라이브러리가 있습니다. 이 포스트에서는 compress
패키지를 사용하여 파일 경로에서 파일을 압축하는 방법을 다룰 것입니다.
파일 경로에서 파일 압축하기
먼저 compress
패키지를 import하여 관련된 기능을 사용할 수 있도록 준비합니다.
import (
"archive/zip"
"os"
"path/filepath"
)
다음으로 압축할 파일들이 담긴 디렉토리의 경로를 지정합니다.
sourceDir := "/path/to/sourceDirectory"
그리고 압축 파일의 경로와 이름을 설정합니다.
destinationFile := "/path/to/destination/archive.zip"
이제 아래의 코드로 파일을 압축합니다.
destination, err := os.Create(destinationFile)
if err != nil {
panic(err)
}
defer destination.Close()
zipWriter := zip.NewWriter(destination)
defer zipWriter.Close()
filepath.Walk(sourceDir, func(filePath string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info.IsDir() {
return nil
}
relativePath, err := filepath.Rel(sourceDir, filePath)
if err != nil {
return err
}
file, err := os.Open(filePath)
if err != nil {
return err
}
defer file.Close()
destination, err := zipWriter.Create(relativePath)
if err != nil {
return err
}
if _, err := io.Copy(destination, file); err != nil {
return err
}
return nil
})
위의 코드는 지정된 경로의 파일을 압축파일로 만드는 일련의 과정을 보여줍니다.
압축 파일을 열어서 다음과 같이 파일이 제대로 압축되었는지 확인할 수 있습니다.
zipReader, err := zip.OpenReader(destinationFile)
if err != nil {
panic(err)
}
defer zipReader.Close()
for _, file := range zipReader.File {
fmt.Println(file.Name)
}
이제 파일 경로에서 파일을 압축하는 방법에 대해 알아 보았습니다. 이 기능을 이용하면 파일 시스템에서 파일을 압축하여 효율적으로 관리할 수 있습니다.
Reference: