| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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
- }
|