golang读取目录只排除第一级目录名中带有符号的目录和所有文件如果有目录接着遍历目录及其文件获取文件所有信息
可以使用filepath包中的Walk函数来遍历目录及其子目录中的所有文件,然后通过判断目录名是否包含@符号来排除第一级目录,再判断是否为文件来排除所有文件,最后对于剩下的目录,递归调用Walk函数即可获取其所有文件信息。
下面是一个示例代码:
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
root := "/path/to/directory"
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if path == root {
// skip the root directory
return nil
}
if info.IsDir() {
// exclude directories with @ in the first level
dirName := filepath.Base(path)
if dirName[0] == '@' {
return filepath.SkipDir
}
fmt.Println("Directory:", path)
} else {
// exclude all files
return nil
}
return nil
})
if err != nil {
fmt.Println(err)
}
}
在遍历目录时,如果遇到第一级目录名中包含@符号的目录,则使用filepath.SkipDir来跳过该目录及其子目录的遍历。如果遇到文件,则直接返回nil,跳过该文件的处理。
对于剩下的目录,递归调用Walk函数即可获取其所有文件信息。在处理目录时,可以根据需要进行进一步的操作,比如获取目录中的文件列表、读取文件内容等
原文地址: https://www.cveoy.top/t/topic/fsN2 著作权归作者所有。请勿转载和采集!