golang 如何获取文件夹中文件的数量
时间: 2024-03-18 18:41:44 浏览: 113
可以使用Go的os包中的ReadDir函数来读取文件夹中的所有文件和子文件夹信息,然后通过计数来获取文件夹中文件的数量。代码示例如下:
```
package main
import (
"fmt"
"os"
)
func main() {
folderPath := "/path/to/folder"
dir, err := os.Open(folderPath)
if err != nil {
fmt.Println("打开文件夹失败:", err)
return
}
defer dir.Close()
files, err := dir.ReadDir(-1)
if err != nil {
fmt.Println("读取文件夹信息失败:", err)
return
}
count := 0
for _, file := range files {
if !file.IsDir() {
count++
}
}
fmt.Printf("文件夹中文件数量为:%d", count)
}
```
上述代码中,通过Open函数打开文件夹,然后通过ReadDir函数读取文件夹中的所有文件和子文件夹信息,并通过遍历统计文件数量。需要注意的是,ReadDir函数的参数-1表示读取所有文件和子文件夹信息,如果需要只读取文件信息可以设置参数为0。
相关问题
golang 遍历文件夹获取文件并发的处理文件
在 Golang 中,可以使用 `filepath.Walk` 函数遍历文件夹,并使用 channel 实现并发处理文件。
下面是一个示例代码:
```go
package main
import (
"fmt"
"io/ioutil"
"path/filepath"
)
func main() {
dir := "/path/to/dir"
fileChan := make(chan string)
go func() {
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if !info.IsDir() {
fileChan <- path
}
return nil
})
if err != nil {
fmt.Println(err)
}
close(fileChan)
}()
var wg sync.WaitGroup
for i := 0; i < 10; i++ {
wg.Add(1)
go func() {
for file := range fileChan {
data, err := ioutil.ReadFile(file)
if err != nil {
fmt.Println(err)
}
// 处理文件
fmt.Println(string(data))
}
wg.Done()
}()
}
wg.Wait()
}
```
上述代码会遍历指定目录下的所有文件并将它们的路径发送到 channel 中,然后启动 10 个 goroutine 并发处理文件。你可以根据实际需求调整 goroutine 数量。
阅读全文