gpt4 book ai didi

java - 如何根据 "last modified"计算每小时的文档数

转载 作者:行者123 更新时间:2023-12-02 13:29:54 27 4
gpt4 key购买 nike

我正在开发一个工具来计算另一个程序的存档文件数。因此,我使用 DirectoryStream 并通过简单的 if 子句过滤子目录和一些文件(如下所示)。

对于统计数据,我想知道平均每小时创建多少个文档。

我在处理文件和目录方面不是很有经验,但我猜有某种“getLastModified”,可以获取从最旧到最年轻的时间范围并计算每小时的平均文档数?

最佳答案

嗯,文件有 lastModified()方法,返回上次修改的时间戳。如果文件不存在或发生 I/O 错误,则返回 0。要将 Path 转换为 File,您可以使用 toFile()方法。这样,计算文件/小时平均值就会相当容易:

long minTimestamp = Long.MAX_VALUE; // definitely greater than any timestamp you will ever find
long maxTimestamp = 0;
int count = 0;

try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(Paths.get("DIRECTORY PATH"))) {
for(Path path: directoryStream) {
if (!(Files.isDirectory(path) || path.toString().endsWith("\\databaseinfo.xml") || path.toString().endsWith(".log"))) {
long lastModified = path.toFile().lastModified();
if (lastModified > 0L) { // check that no error occurred
if (lastModified < minTimestamp) minTimestamp = lastModified; // new minimum
if (maxTimestamp < lastModified) maxTimestamp = lastModified; // new maximum
}
count = count + 1;
}
}

} catch (IOException e) {
e.printStackTrace();
}
System.out.println(count);
double filesPerHour = 0;
if (maxTimestamp != minTimestamp) { // avoid division by 0
filesPerHour = (double) count * 60 * 60 * 1000 / (maxTimestamp - minTimestamp); // 60 * 60 * 1000 = milliseconds in one hour
}
System.out.println(filesPerHour);

编辑:反转 if 条件,以避免在 else block 中包含代码的空 if 语句

关于java - 如何根据 "last modified"计算每小时的文档数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43231835/

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