| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package main
- import (
- "fmt"
- "io"
- "log"
- "os"
- )
- func main() {
- dirTree(os.Stdout, "..", true)
- }
- func dirTree(output io.Writer, currDir string, printFile bool) error {
- recursionDirTree(currDir, false)
- return nil
- }
- // todo Разобраться с log, err.Error
- func recursionDirTree(currDir string, printFiles bool) {
- fileObj, err := os.Open(currDir)
- defer fileObj.Close()
- if err != nil {
- log.Fatalf("Could not open %s: %s", currDir, err.Error())
- }
- files, err := os.ReadDir(fileObj.Name())
- if err != nil {
- log.Fatalf("Could not read dir names in %s: %s", currDir, err.Error())
- }
- // 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.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)
- }
|