Dmitry Telenkov 1 天之前
父节点
当前提交
a0dde19dc6
共有 1 个文件被更改,包括 63 次插入0 次删除
  1. 63 0
      go/stepik/course_3/base/task/main.go

+ 63 - 0
go/stepik/course_3/base/task/main.go

@@ -0,0 +1,63 @@
+package main
+
+import (
+	"fmt"
+	"os"
+)
+
+func main() {
+	out := os.Stdout
+
+	// Первый аргумент - путь, второй - опция
+	if !(len(os.Args) == 2 || len(os.Args) == 3) {
+		panic("usage go run main.go . [-f]")
+	}
+
+	path := os.Args[1]
+	printFiles := len(os.Args) == 3 && os.Args[2] == "-f"
+	err := dirTree(out, path, printFiles)
+	if err != nil {
+		panic(err.Error())
+	}
+
+	// fmt.Println(path, printFiles, len(os.Args))
+	// fmt.Printf("%T\n", out, err)
+}
+
+func dirTree(file *os.File, path string, printFiles bool) error {
+	var staticFile = file
+	fmt.Println("Function tree")
+	fmt.Println(file, path, printFiles)
+
+	// Открыть текущую директорию
+	dir, err := os.Open(path)
+	if err != nil {
+		// return err.Error()
+		return err
+	}
+	defer dir.Close()
+
+	// Получаем список файлов и папок
+	files, err := dir.Readdir(-1)
+	if err != nil {
+		return err
+	}
+
+	// Выводим имена файлов и папок
+	for _, file := range files {
+		if file.IsDir() {
+			fmt.Println("Directory: ", file.Name())
+			dirTree(staticFile, path, printFiles)
+		} else {
+			fmt.Println(file.Name())
+		}
+	}
+
+	/*
+		file, err := os.Open("file.go") // For read access.
+		if err != nil {
+			log.Fatal(err)
+		}
+	*/
+	return nil
+}