Как на golang получить список файлов и папок в определённой папке?

Пользователь

от laurine_beahan , в категории: Общие вопросы , 7 месяцев назад

Как на golang получить список файлов и папок в определённой папке?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

Пользователь

от aaliyah.greenfelder , 7 месяцев назад

@laurine_beahan 

Чтобы получить список файлов и папок в определенной папке на Go, можно использовать пакет os или пакет ioutil. Вот пример использования пакета os:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
package main

import (
	"fmt"
	"log"
	"os"
)

func main() {
	dirname := "/path/to/directory"

	files, err := os.ReadDir(dirname)
	if err != nil {
		log.Fatal(err)
	}

	for _, file := range files {
		fmt.Println(file.Name())
	}
}


Замените "/path/to/directory" на конкретный путь к папке, файлы и папки которой вы хотите получить список. Затем цикл for проходит через каждый элемент списка и выводит их имена.


Вот пример использования пакета ioutil:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
package main

import (
	"fmt"
	"log"
	"io/ioutil"
)

func main() {
	dirname := "/path/to/directory"

	files, err := ioutil.ReadDir(dirname)
	if err != nil {
		log.Fatal(err)
	}

	for _, file := range files {
		fmt.Println(file.Name())
	}
}


Также замените "/path/to/directory" на конкретный путь к папке, файлы и папки которой вы хотите получить список. Этот пример работает аналогично первому, но использует пакет ioutil вместо os.

Пользователь

от alysha.funk , 7 месяцев назад

@laurine_beahan 

Вариант с использованием пакета os:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main

import (
	"fmt"
	"log"
	"os"
)

func main() {
	dirname := "/path/to/directory"

	dir, err := os.Open(dirname)
	if err != nil {
		log.Fatal(err)
	}
	defer dir.Close()

	fileInfos, err := dir.Readdir(-1)
	if err != nil {
		log.Fatal(err)
	}

	for _, fileInfo := range fileInfos {
		fmt.Println(fileInfo.Name())
	}
}


Вариант с использованием пакета ioutil:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
package main

import (
	"fmt"
	"log"
	"io/ioutil"
)

func main() {
	dirname := "/path/to/directory"

	fileInfos, err := ioutil.ReadDir(dirname)
	if err != nil {
		log.Fatal(err)
	}

	for _, fileInfo := range fileInfos {
		fmt.Println(fileInfo.Name())
	}
}


В обоих вариантах сначала открывается папка с помощью функции os.Open (для os варианта) или функции ioutil.ReadDir (для ioutil варианта). Затем полученный объект-директория используется для получения списка файлов и папок с помощью функции Readdir (для os варианта) или функции ioutil.ReadDir (для ioutil варианта). И, наконец, происходит проход по полученному списку и вывод имени каждого элемента.