[go] Go 언어의 경로를 이용한 파일 및 디렉토리 비교
Go 언어를 사용하여 파일 및 디렉토리를 비교하기 위해 경로를 다루는 방법에 대해 알아보겠습니다.
파일 비교
Go에서 두 파일을 비교하는 가장 간단한 방법은 파일의 내용 또는 속성을 읽어 비교하는 것입니다. 디렉토리 내의 파일을 비교하려면 filepath 라이브러리를 사용할 수 있습니다.
package main
import (
"io/ioutil"
"log"
"os"
)
func main() {
file1, err := ioutil.ReadFile("path/to/file1.txt")
if err != nil {
log.Fatal(err)
}
file2, err := ioutil.ReadFile("path/to/file2.txt")
if err != nil {
log.Fatal(err)
}
if string(file1) == string(file2) {
log.Println("Files are identical")
} else {
log.Println("Files are different")
}
}
디렉토리 비교
디렉토리 내의 파일을 비교하기 전에 filepath.Walk 함수를 사용하여 모든 파일과 서브디렉토리를 재귀적으로 방문할 수 있습니다.
package main
import (
"log"
"os"
"path/filepath"
)
func main() {
filepath.Walk("path/to/directory1", func(path1 string, info os.FileInfo, err error) error {
if err != nil {
log.Println(err)
return nil
}
path2 := "path/to/directory2" + path1[len("path/to/directory1"):]
info2, err := os.Stat(path2)
if os.IsNotExist(err) || info2 == nil {
log.Println("File", path1, "does not exist in directory2")
}
return nil
})
}
마치며
Go 언어의 경로를 이용한 파일 및 디렉토리 비교 방법에 대해 간단히 살펴보았습니다. 이러한 방법을 통해 파일 및 디렉토리 간의 차이를 비교하고 싶을 때 유용하게 활용할 수 있습니다.
참조:
- https://golang.org/pkg/path/filepath/
- https://golang.org/pkg/io/ioutil/