Java FTP文件-FileListFilter仅获取最新文件
我正在尝试实现如下内容:Java FTP文件-FileListFilter仅获取最新文件,java,spring,filter,ftp,spring-integration,Java,Spring,Filter,Ftp,Spring Integration,我正在尝试实现如下内容: Arrays.sort(files, new Comparator<File>(){ public int compare(File f1, File f2) { return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified()); } }); public class NewestFileOnlyFilter implements FileList
Arrays.sort(files, new Comparator<File>(){
public int compare(File f1, File f2)
{
return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
} });
public class NewestFileOnlyFilter implements FileListFilter<FTPFile> {
//logic to return only the newest file.
}
时间戳通常是上次修改的时间-请参阅javadocs
/***
* Returns the file timestamp. This usually the last modification time.
*
* @return A Calendar instance representing the file timestamp.
***/
public Calendar getTimestamp()
日历
实现了可比
时间戳通常是上次修改的时间-请参阅javadocs
/***
* Returns the file timestamp. This usually the last modification time.
*
* @return A Calendar instance representing the file timestamp.
***/
public Calendar getTimestamp()
日历
实现可比
您可以执行以下操作:
public int compare(File f1, File f2)
{
Calendar dateOfmyFile=f1.getTimestamp();
Date dateF1 = dateOfmyFile.getTime();
dateOfmyFile=f2.getTimestamp();
Date dateF2 = dateOfmyFile.getTime();
long difference = dateF1-dateF2;
if(difference<0)
return dateF2;
else
return dateF1;
}
public int比较(文件f1、文件f2)
{
日历dateOfmyFile=f1.getTimestamp();
Date dateF1=dateOfmyFile.getTime();
dateOfmyFile=f2.getTimestamp();
Date dateF2=dateOfmyFile.getTime()的日期;
长差=dateF1-dateF2;
如果(差异您可以这样做:
public int compare(File f1, File f2)
{
Calendar dateOfmyFile=f1.getTimestamp();
Date dateF1 = dateOfmyFile.getTime();
dateOfmyFile=f2.getTimestamp();
Date dateF2 = dateOfmyFile.getTime();
long difference = dateF1-dateF2;
if(difference<0)
return dateF2;
else
return dateF1;
}
public int比较(文件f1、文件f2)
{
日历dateOfmyFile=f1.getTimestamp();
Date dateF1=dateOfmyFile.getTime();
dateOfmyFile=f2.getTimestamp();
Date dateF2=dateOfmyFile.getTime()的日期;
长差=dateF1-dateF2;
如果(差异以下是您可以做到的:
public类NewestFileOnlyFilter实现FileListFilter{
@凌驾
公共列表筛选器文件(FTPFile[]文件){
返回Arrays.stream(文件)//1
.max(Comparator.comparing(FTPFile::getTimestamp))//2
.map(集合::singletonList)//3
.orElse(Collections.emptyList());//4
}
}
对参考线的一些澄清:
以流的形式表示数组,以简化其进一步处理
主要步骤:
- 使用
max
方法搜索流的最大元素
- 提供带有比较器的
max
方法和比较器。比较
- 为比较器提供一个函数,该函数返回用于比较的键-
getTimestamp
,在本例中,我们通过修改时间比较文件
将搜索结果(具有最大时间戳的文件)包装到具有单个元素(如果有)的列表中
否则返回空列表。
这不太可能发生在FileListFilter
中,但我们也会处理这种情况
以下是如何做到这一点:
public类NewestFileOnlyFilter实现FileListFilter{
@凌驾
公共列表筛选器文件(FTPFile[]文件){
返回Arrays.stream(文件)//1
.max(Comparator.comparing(FTPFile::getTimestamp))//2
.map(集合::singletonList)//3
.orElse(Collections.emptyList());//4
}
}
对参考线的一些澄清:
以流的形式表示数组,以简化其进一步处理
主要步骤:
- 使用
max
方法搜索流的最大元素
- 提供带有比较器的
max
方法和比较器。比较
- 为比较器提供一个函数,该函数返回用于比较的键-
getTimestamp
,在本例中,我们通过修改时间比较文件
将搜索结果(具有最大时间戳的文件)包装到具有单个元素(如果有)的列表中
否则返回空列表。
这不太可能发生在FileListFilter
中,但我们也会处理这种情况