2014-01-15 6 views
0

Допустим, у меня есть следующая структура каталогов:Как итерацию каталог без ввода в подкаталоги

RootDir 
---SubDir1 
------SubSubDir 
---------file1 
---------file2 
---SubDir2 
---SubDir3 
---file3 
---file4 

Я хочу итерацию только над содержимым RootDir(SubDir1, Subdir2, Subdir3, file3, file 4) и проверить, если это реж или файл, без ввода в подкаталоги, например filepath.Walk.

Есть ли способ сделать это в библиотеке Go?

редактировать:

files, err := os.Open("c:\\Documents") 
file, err := files.Readdir(0) 

if err != nil { 
    fmt.Printf("Error: %s\n", err) 
} 

for f := range file { 
    fmt.Println(f.IsDir()) 
} 

Так вот я пытаюсь итерацию корыта FileInfo, который является ломтик, и проверить для каждого файла, если это каталог, но я всегда получаю эту ошибку:

f.IsDir undefined (type int has no field or method IsDir) 

ответ

2

Вы можете прочитать каталог, открывая его с os.Open и возвращенным *os.File есть метод, который дает Readdir()os.FileInfo с для содержания прямой папки и эти FileInfo имеют IsDir() способ.

+0

Знаете ли вы, почему для меня FileInfo обрабатывается как int? (тип int не имеет поля или метода IsDir) – Kobe

+0

Трудно сказать, что не так, не видя кода .... – Volker

+0

Я обновил вопрос с помощью связанного кода. – Kobe

Смежные вопросы