Dmitry Telenkov 23 ore fa
parent
commit
f492c55bc5
1 ha cambiato i file con 36 aggiunte e 5 eliminazioni
  1. 36 5
      go/stepik/course_3/base/task/main.go

+ 36 - 5
go/stepik/course_3/base/task/main.go

@@ -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)
+
 }