golang 遍历文件夹获取文件并发的处理文件
时间: 2024-03-18 17:42:13 浏览: 165
在 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 数量。
阅读全文