I имеют следующую структуру:Go - Перебрать directores/файлов в текущем каталоге
project/
docs/
index.html
root.html
Я пытаюсь перебирать эту структуру проекта, так что я могу прочитать содержимое каждого файла для их обработки. Поэтому я хочу сказать «поиск по проекту каталога», затем он будет искать по всем файлам и только первый уровень каталогов и их файлы, поэтому, если бы был другой каталог с файлом внутри docs/
, он бы игнорируй это.
В настоящее время, я пытался сделать это с «путь/Filepath» Библиотека:
func traverse(path string, file os.FileInfo, err error) error {
if file, err := os.Open(file.Name()); err == nil {
defer file.Close()
if fileStat, err := file.Stat(); err == nil {
switch mode := fileStat.Mode(); {
case mode.IsDir():
fmt.Println("it be a directory! lets traverse", file.Name())
filepath.Walk(file.Name(), traverse)
case mode.IsRegular():
fmt.Println("the thingy ", file.Name(), " is a file")
}
} else {
return errors.New("failed to check status")
}
}
return errors.New("failed 2 open file/dir?")
}
Тогда я назвал его здесь:
if err := filepath.Walk("project/", traverse); err != nil {
setupErr("%s", err)
}
Следует заметить, что я бегу этот исполняемый относительно в мой тестовый каталог, так что он находит директорию в порядке. Моя проблема заключается в самом деле, когда я бег, я получаю следующее:
it be a directory! lets traverse project
it be a directory! lets traverse project
#^printed about 20 more times^
failed 2 open file/dir?
Я думаю, что моя рекурсия поодаль, и он не меняется в каталог возможно? Любые идеи, если вам нужна дополнительная информация, просто спросите, и я обновлю.
Хм, ладно спасибо. И как я буду перебирать каталоги? Я немного новичок в Go. – chapman
Вот он: http://play.golang.org/p/F7LwBgm8h3 –
Фантастический, спасибо @AlexAtNet – chapman