gpt4 book ai didi

java - 检查跨目录的文件分布

转载 作者:行者123 更新时间:2023-11-30 07:19:28 24 4
gpt4 key购买 nike

背景

我有一个应用程序在固定目录中创建多个子文件夹。它在这些目录中放置了许多文件。文件数量均匀分布在这些文件夹中。我有一个测试,检查文件夹中的固定值,因此每个文件夹中有 n 个文件。

问题

我如何测试,如果有 4 个子文件夹和 5 条消息,这 4 个子文件夹中的消息分布是 1 个文件夹中 2 条消息,另外 3 个文件夹中 1 条消息?

源代码

public boolean checkFileCountInEachFolder(int expectedCount){
File folder = new File(AppProperties.getInstance().get("path"));
File[] files = folder.listFiles();

if (files != null) {
for (int i = 0; i < files.length; i++) {
File file = files[i];

if (file.isDirectory()) {
int fileCount = listFiles(file, new ArrayList<File>()).size();
if (fileCount!=expectedCount) {
return false;
}
}
}
}

return true;
}

最佳答案

有很多方法可以做到这一点,这是其中之一。

首先,使用 FileFilter 列出子目录。

将消息数(该方法的参数是消息数)除以文件夹数,以获得最少的预期出现次数(可能为 0)。

由于分布均匀,因此最大出现次数不能超过最小值 + 1。

检查每个子文件夹中的文件数量是否在此范围内(或者在本例中简单地等于最小值或最大值)。

最后,将找到的所有文件的计数相加,并将结果与​​消息总数进行比较。

public boolean checkFileCountInEachFolder(final int nbMessages) {

File folder = new File(AppProperties.getInstance().get("path"));

File[] subFolders = folder.listFiles(new FileFilter() {
@Override
public boolean accept(final File f) {
return f.isDirectory();
}
});

int nbFolders = subFolders.length;
int minOccurences = nbMessages / nbFolders;
int maxOccurences = minOccurences + 1;

int totalCount = 0;

for (int i = 0; i < subFolders.length; i++) {
File file = subFolders[i];

int fileCount = listFiles(file, new ArrayList<File>()).size();
if (fileCount < minOccurences || fileCount > maxOccurences) {
return false;
}

totalCount += fileCount;

}

return (totalCount == nbMessages);

}

关于java - 检查跨目录的文件分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37830493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com