做个笔记:
需求:获取MongoDB中的某一个collection数据存量(储存位置自个指定的,本地文件大小);
思路:当然是使用Files.walk(Path start, int maxDepth, FileVisitOption... options)
文件树结构图:
代码:ennn,没错就是这么长,因为每次调用walk都会抛出IO异常,嗯,对了遍历中不能直接计算文件大小,所以我整了一个计数器;
//用于累加全部文件大小 全局的
storageSize = 0;
try {//第一个参数,遍历文件夹,开始的位置,Paths.get(original,tenancyId)
//original = /was/original ; tenancyId:用户特定标识符
Files.walk(Paths.get(original,tenancyId),1)
.filter(Files::isDirectory)//过滤添加 是个文件夹就行,条件也可以是其他的
.forEach(tenancyPath -> {
if(tenancyPath.getFileName().toString().equals(tenancyId)){
try {
Files.walk(tenancyPath,1)
.filter(Files::isDirectory)
.forEach(assetPath ->{
try {
Files.walk(assetPath,1)
.filter(Files::isDirectory).forEach(day ->{
try {
Files.walk(day,1)
.filter(Files::isRegularFile)//到此,需要计算文件大小了
.forEach(logText -> countSize(logText.toFile().length()));
} catch (IOException e) {
e.printStackTrace();
}
});
} catch (IOException e) {
e.printStackTrace();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
});
} catch (IOException e) {
e.printStackTrace();
}
return storageSize;
}
//计数器
private void countSize(long size){
storageSize += size;
}
笔记记完了。
(enn哈哈 如果有这个需求的朋友可以联系我,咱们详谈,有错误也请各位放肆的☞出,thank you)