Browse Source

处理单个目录的扫描

master
xyiege 6 months ago
parent
commit
8bc5ee36f8
  1. 59
      scagent/core/JsonRpc.go

59
scagent/core/JsonRpc.go

@ -39,7 +39,6 @@ type FlpList struct {
// 获取文件路径 // 获取文件路径
func (f *FileRpcService) GetFilePath(args *Args, replay *string) error { func (f *FileRpcService) GetFilePath(args *Args, replay *string) error {
// 启用日志 // 启用日志
logger := util.NewProductionLogger() logger := util.NewProductionLogger()
defer logger.Sync() defer logger.Sync()
@ -57,28 +56,50 @@ func scanFileUnderPath(rootDir string, scope string, logger *zap.Logger, replay
// 遍历目录下的文件 // 遍历目录下的文件
var allFiles []string // 存储所有文件路径 var allFiles []string // 存储所有文件路径
// 递归遍历目录及其子目录 // 遍历所有的文件,时间长
err := filepath.WalkDir(rootDir, func(path string, d os.DirEntry, err error) error { if scope == "all" {
// 处理遍历过程中的错误(如权限不足) // 递归遍历目录及其子目录
err := filepath.WalkDir(rootDir, func(path string, d os.DirEntry, err error) error {
// 处理遍历过程中的错误(如权限不足)
if err != nil {
logger.Error("访问路径出错", zap.Error(err))
// 判断扫描范围
if scope == "all" {
return filepath.SkipDir
} else {
return nil
}
}
// 只收集文件(排除目录)
if !d.IsDir() {
allFiles = append(allFiles, path)
}
return nil
})
// 打印错误日志
if err != nil { if err != nil {
logger.Error("访问路径出错", zap.Error(err)) logger.Error("遍历目录出错", zap.Error(err))
// 判断扫描范围 }
if scope == "all" { }
return filepath.SkipDir // 遍历对一个的目录
} else { if scope == "dir" {
return nil // 遍历目录下的文件
finfo, err := os.Stat(rootDir)
if err != nil {
logger.Error("获取目录信息出错", zap.Error(err))
}
// 遍历目录下的文件
if finfo.IsDir() {
files, err := os.ReadDir(rootDir)
if err != nil {
logger.Error("读取目录出错", zap.Error(err))
}
for _, file := range files {
allFiles = append(allFiles, filepath.Join(rootDir, file.Name()))
} }
} }
// 只收集文件(排除目录)
if !d.IsDir() {
allFiles = append(allFiles, path)
}
return nil
})
// 打印错误日志
if err != nil {
logger.Error("遍历目录出错", zap.Error(err))
} }
// //

Loading…
Cancel
Save