Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java FTP文件-FileListFilter仅获取最新文件_Java_Spring_Filter_Ftp_Spring Integration - Fatal编程技术网

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
    中,但我们也会处理这种情况