|
|
@ -2,6 +2,7 @@ package core |
|
|
|
|
|
|
|
|
import ( |
|
|
import ( |
|
|
"encoding/json" |
|
|
"encoding/json" |
|
|
|
|
|
"fmt" |
|
|
"os" |
|
|
"os" |
|
|
"path/filepath" |
|
|
"path/filepath" |
|
|
"runtime" |
|
|
"runtime" |
|
|
@ -28,7 +29,7 @@ type FileRpcService struct{} |
|
|
// 返回的文件json结构体
|
|
|
// 返回的文件json结构体
|
|
|
type FloopJson struct { |
|
|
type FloopJson struct { |
|
|
Path string `json:"path"` |
|
|
Path string `json:"path"` |
|
|
Size int64 `json:"size"` |
|
|
Size string `json:"size"` |
|
|
Hash string `json:"hash"` |
|
|
Hash string `json:"hash"` |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -64,11 +65,7 @@ func scanFileUnderPath(rootDir string, scope string, logger *zap.Logger, replay |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
logger.Error("访问路径出错", zap.Error(err)) |
|
|
logger.Error("访问路径出错", zap.Error(err)) |
|
|
// 判断扫描范围
|
|
|
// 判断扫描范围
|
|
|
if scope == "all" { |
|
|
return filepath.SkipDir |
|
|
return filepath.SkipDir |
|
|
|
|
|
} else { |
|
|
|
|
|
return nil |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 只收集文件(排除目录)
|
|
|
// 只收集文件(排除目录)
|
|
|
@ -81,6 +78,18 @@ func scanFileUnderPath(rootDir string, scope string, logger *zap.Logger, replay |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
logger.Error("遍历目录出错", zap.Error(err)) |
|
|
logger.Error("遍历目录出错", zap.Error(err)) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 打印所有文件路径
|
|
|
|
|
|
for _, file := range allFiles { |
|
|
|
|
|
// 打印所有文件路径
|
|
|
|
|
|
// fmt.Printf("%d. %s\n", i+1, file)
|
|
|
|
|
|
d, _ := os.Stat(file) |
|
|
|
|
|
// 加入到列表
|
|
|
|
|
|
hash := util.CalacHash(file) |
|
|
|
|
|
// 文件大小
|
|
|
|
|
|
fsize := fmt.Sprintf("%.2f KB", d.Size()/1024) |
|
|
|
|
|
flplist.Flist = append(flplist.Flist, FloopJson{Path: file, Size: fsize, Hash: hash}) |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
// 遍历对一个的目录
|
|
|
// 遍历对一个的目录
|
|
|
if scope == "dir" { |
|
|
if scope == "dir" { |
|
|
@ -96,22 +105,30 @@ func scanFileUnderPath(rootDir string, scope string, logger *zap.Logger, replay |
|
|
logger.Error("读取目录出错", zap.Error(err)) |
|
|
logger.Error("读取目录出错", zap.Error(err)) |
|
|
} |
|
|
} |
|
|
for _, file := range files { |
|
|
for _, file := range files { |
|
|
allFiles = append(allFiles, filepath.Join(rootDir, file.Name())) |
|
|
// fmt.Printf("文件路径: %s\n", file.Name())
|
|
|
|
|
|
fileinfo, err := os.Stat(file.Name()) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
logger.Error("获取文件信息出错", zap.Error(err)) |
|
|
|
|
|
continue |
|
|
|
|
|
} |
|
|
|
|
|
var fsize string |
|
|
|
|
|
if file.IsDir() { |
|
|
|
|
|
fsize = "0" |
|
|
|
|
|
} else { |
|
|
|
|
|
fsize = fmt.Sprintf("%d", fileinfo.Size()) |
|
|
|
|
|
} |
|
|
|
|
|
// 加入到列表
|
|
|
|
|
|
hash := util.CalacHash(file.Name()) |
|
|
|
|
|
flplist.Flist = append(flplist.Flist, FloopJson{Path: filepath.Join(rootDir, file.Name()), Size: fsize, Hash: hash}) |
|
|
|
|
|
// allFiles = append(allFiles, filepath.Join(rootDir, file.Name()))
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 遍历文件
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//
|
|
|
//
|
|
|
// 打印所有文件路径
|
|
|
|
|
|
for _, file := range allFiles { |
|
|
|
|
|
// 打印所有文件路径
|
|
|
|
|
|
// fmt.Printf("%d. %s\n", i+1, file)
|
|
|
|
|
|
d, _ := os.Stat(file) |
|
|
|
|
|
// 加入到列表
|
|
|
|
|
|
hash := util.CalacHash(file) |
|
|
|
|
|
flplist.Flist = append(flplist.Flist, FloopJson{Path: file, Size: d.Size(), Hash: hash}) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 将文件列表转换为json字符串
|
|
|
// 将文件列表转换为json字符串
|
|
|
jsonStr, err := json.Marshal(flplist) |
|
|
jsonStr, err := json.Marshal(flplist) |
|
|
|