[Go] 특정 디렉터리의 파일 일람을 차례로 가져옵니다.

4130 단어 Gotech
이번에 검증된 카탈로그 구조는 이런 느낌이다.dir/ 디렉터리에 있는 파일의 일람을 차례로 가져옵니다.
$ tree
.
├── dir
│   ├── AAA
│   │   ├── BBB
│   │   │   └── bbb.txt
│   │   └── aaa.txt
│   └── CCC
│       └── ccc.txt
└── main.go

샘플 코드

path/filepath 가방을 사용하는 Walk()는 매우 쉽게 실현할 수 있다.
첫 번째 파라미터에서 파일을 일람하는 디렉터리 경로를 지정하고, 두 번째 파라미터에서 각 파일이나 디렉터리의 정보를 받아들이는 호출 함수를 지정합니다.
호출 함수os.FileInfo까지 전달되기 때문에 파일에 대한 자세한 정보를 얻으려면 이것을 사용할 수 있습니다.
main.go
package main

import (
	"fmt"
	"os"
	"path/filepath"
)

func main() {
	err := filepath.Walk("dir", func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}

		// 特定のディレクトリを無視したい場合は `filepath.SkipDir` を返す
		// 例えば `AAA` という名前のディレクトリを無視する場合は以下のようにする
		// if info.IsDir() && info.Name() == "AAA" {
		// 	return filepath.SkipDir
		// }

		fmt.Printf("path: %#v\n", path)
		return nil
	})

	if err != nil {
		panic(err)
	}
}
출력 예
$ go run main.go
path: "dir"
path: "dir/AAA"
path: "dir/AAA/BBB"
path: "dir/AAA/BBB/bbb.txt"
path: "dir/AAA/aaa.txt"
path: "dir/CCC"
path: "dir/CCC/ccc.txt"

참고 자료


https://golang.org/pkg/path/filepath/#Walk
https://yourbasic.org/golang/list-files-in-directory/

좋은 웹페이지 즐겨찾기