|
|
@@ -8,16 +8,16 @@ import (
|
|
|
)
|
|
|
|
|
|
func main() {
|
|
|
- dirTree(os.Stdout, ".", true)
|
|
|
+ dirTree(os.Stdout, "..", true)
|
|
|
}
|
|
|
|
|
|
func dirTree(output io.Writer, currDir string, printFile bool) error {
|
|
|
- recursionDirTree(currDir)
|
|
|
+ recursionDirTree(currDir, false)
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
// todo Разобраться с log, err.Error
|
|
|
-func recursionDirTree(currDir string) {
|
|
|
+func recursionDirTree(currDir string, printFiles bool) {
|
|
|
fileObj, err := os.Open(currDir)
|
|
|
defer fileObj.Close()
|
|
|
if err != nil {
|
|
|
@@ -29,9 +29,40 @@ func recursionDirTree(currDir string) {
|
|
|
log.Fatalf("Could not read dir names in %s: %s", currDir, err.Error())
|
|
|
}
|
|
|
|
|
|
- var filesMap map[string]os.FileInfo = map
|
|
|
+ // os.ReadDir возвращает отсортированный слайс DirEntry
|
|
|
+ var sortedFilesNameArr []string = []string{}
|
|
|
+ var filesMap map[string]os.DirEntry = map[string]os.DirEntry{}
|
|
|
+
|
|
|
+ for _, file := range files {
|
|
|
+ sortedFilesNameArr = append(sortedFilesNameArr, file.Name())
|
|
|
+ filesMap[file.Name()] = file
|
|
|
+ }
|
|
|
|
|
|
- fmt.Printf("%T\n", files[0])
|
|
|
fmt.Println(files)
|
|
|
|
|
|
+ // Превращаем слайс всех объектов (файлов и папок) в слайс только папок
|
|
|
+ // если printFiles == false
|
|
|
+ var dirList []os.DirEntry = []os.DirEntry{}
|
|
|
+ if !printFiles {
|
|
|
+ for _, file := range files {
|
|
|
+ if file.IsDir() {
|
|
|
+ dirList = append(dirList, file)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ files = dirList
|
|
|
+ }
|
|
|
+
|
|
|
+ var length int = len(files)
|
|
|
+ fmt.Println(length)
|
|
|
+
|
|
|
+ // for i, file := range files{}
|
|
|
+
|
|
|
+ // fmt.Println(files)
|
|
|
+
|
|
|
+ // fmt.Println(unSortedFilesNameArr)
|
|
|
+ // fmt.Println(sortedFilesArr)
|
|
|
+
|
|
|
+ // fmt.Printf("%T\n", files[0])
|
|
|
+ // fmt.Println(files)
|
|
|
+
|
|
|
}
|