gpt4 book ai didi

java - FTP 文件 - FileListFilter 仅获取最新文件

转载 作者:行者123 更新时间:2023-12-01 08:50:17 24 4
gpt4 key购买 nike

我正在尝试实现这样的事情:

Arrays.sort(files, new Comparator<File>(){
public int compare(File f1, File f2)
{
return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
} });

问题是我有 FTPFile 而不是 File,并且 FTPFile 只有 getTimestamp()。

如何实现过滤器以根据修改日期仅下载最新文件?

或者我如何调整我展示的示例以使用 FTPFile 而不是 File

它看起来一定是这样的:

public class NewestFileOnlyFilter implements FileListFilter<FTPFile> {
//logic to return only the newest file.
}

最佳答案

具体操作方法如下:

public class NewestFileOnlyFilter implements FileListFilter<FTPFile> {

@Override
public List<FTPFile> filterFiles(FTPFile[] files) {
return Arrays.stream(files) // 1
.max(Comparator.comparing(FTPFile::getTimestamp)) // 2
.map(Collections::singletonList) // 3
.orElse(Collections.emptyList()); // 4
}
}

对引用行的一些说明:

  1. 以流的形式表示数组,以简化其进一步处理;
  2. 主要步骤:

    • 使用 max 方法搜索流的最大元素;
    • 通过 Comparator.comparing 提供带有比较器的 max 方法;
    • 为比较器提供一个返回比较键的函数 - 在本例中是 getTimestamp,因为我们按文件的修改时间来比较文件。
  3. 将搜索结果(具有最大时间戳的文件)包装到具有单个元素(如果有)的列表中;

  4. 否则返回空列表。
    这种情况不太可能发生在 FileListFilter 中,但我们仍然会处理这种情况。

关于java - FTP 文件 - FileListFilter 仅获取最新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42437543/

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