Browse Source

处理单个目录的扫描

master
xyiege 5 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 {
// 启用日志
logger := util.NewProductionLogger()
defer logger.Sync()
@ -57,28 +56,50 @@ func scanFileUnderPath(rootDir string, scope string, logger *zap.Logger, replay
// 遍历目录下的文件
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 {
logger.Error("访问路径出错", zap.Error(err))
// 判断扫描范围
if scope == "all" {
return filepath.SkipDir
} else {
return nil
logger.Error("遍历目录出错", zap.Error(err))
}
}
// 遍历对一个的目录
if scope == "dir" {
// 遍历目录下的文件
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