How to get the twelve latest file in ftp server using ftp client in JAVA

788 views Asked by At

I want to read the 12 twelve latest XML files in FTP server using an FTP client but I only get the latest and the last one.

public static void main(String[] args) throws IOException
{
  FTPClient client = new FTPClient();
  try
  {
    client.connect(host);
    client.login(user, pwd);
    FTPFile[] files = client.listFiles();
    FTPFile lastFile = lastFileModified(files);
    System.out.println(lastFile.getName());
    client.disconnect();
  }
  catch (SocketException e)
  {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  catch (IOException e)
  {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }

}

public static FTPFile lastFileModified(FTPFile[] files)
{
  Date lastMod = files[0].getTimestamp().getTime();
  FTPFile choice = null;
  for (FTPFile file : files)
  {
    if (file.getTimestamp().getTime().after(lastMod))
    {
      choice = file;
      lastMod = file.getTimestamp().getTime();
    }
  }
  return choice;
}
Connection Success
/AGIN/20150616
201506152344.xml
/AGIN/20150616
201506152348.xml
/AGIN/20150616
201506152352.xml
/AGIN/20150616
201506152356.xml
/AGIN/20150616
201506160000.xml
/AGIN/20150616
201506160004.xml
/AGIN/20150616
201506160008.xml
/AGIN/20150616
201506160012.xml
/AGIN/20150616
201506160016.xml
/AGIN/20150616
201506160020.xml
/AGIN/20150616
201506160024.xml
/AGIN/20150616
201506160028.xml
/AGIN/20150616
201506160032.xml
/AGIN/20150616
201506160036.xml
/AGIN/20150616
201506160040.xml
/AGIN/20150616
201506160044.xml
/AGIN/20150616
201506160048.xml
/AGIN/20150616
201506160052.xml
/AGIN/20150616
201506160056.xml
/AGIN/20150616
201506160100.xml
/AGIN/20150616
201506160104.xml
/AGIN/20150616
201506160108.xml
/AGIN/20150616
201506160112.xml
/AGIN/20150616
201506160116.xml
/AGIN/20150616
201506160120.xml
/AGIN/20150616
201506160124.xml
/AGIN/20150616
201506160128.xml
/AGIN/20150616
201506160132.xml
/AGIN/20150616
201506160136.xml
/AGIN/20150616
201506160140.xml
/AGIN/20150616
201506160144.xml
/AGIN/20150616
201506160148.xml
/AGIN/20150616
201506160152.xml
/AGIN/20150616
201506160156.xml
/AGIN/20150616
201506160200.xml
/AGIN/20150616
201506160204.xml
/AGIN/20150616
201506160208.xml
/AGIN/20150616
201506160212.xml
/AGIN/20150616
201506160216.xml
/AGIN/20150616
201506160220.xml
/AGIN/20150616
201506160224.xml
/AGIN/20150616
201506160228.xml
/AGIN/20150616
201506160232.xml
/AGIN/20150616
201506160236.xml
/AGIN/20150616
201506160240.xml
/AGIN/20150616
201506160244.xml
/AGIN/20150616
201506160248.xml
/AGIN/20150616
201506160252.xml
/AGIN/20150616
201506160256.xml
/AGIN/20150616
201506160300.xml
/AGIN/20150616
201506160304.xml
/AGIN/20150616
201506160308.xml
/AGIN/20150616
201506160312.xml
/AGIN/20150616
201506160316.xml
/AGIN/20150616
201506160320.xml
/AGIN/20150616
201506160324.xml
/AGIN/20150616
201506160328.xml
/AGIN/20150616
201506160332.xml
/AGIN/20150616
201506160336.xml
/AGIN/20150616
201506160340.xml
/AGIN/20150616
201506160344.xml
/AGIN/20150616
201506160348.xml
/AGIN/20150616
201506160352.xml
/AGIN/20150616
201506160356.xml
/AGIN/20150616
201506160400.xml
/AGIN/20150616
201506160404.xml
/AGIN/20150616
201506160408.xml
/AGIN/20150616
201506160412.xml
/AGIN/20150616
201506160416.xml
/AGIN/20150616
201506160420.xml
/AGIN/20150616
201506160424.xml
/AGIN/20150616
201506160428.xml
/AGIN/20150616
201506160432.xml
/AGIN/20150616
201506160436.xml
/AGIN/20150616
201506160440.xml
/AGIN/20150616
201506160444.xml
/AGIN/20150616
201506160448.xml
/AGIN/20150616
201506160452.xml
/AGIN/20150616
201506160456.xml
/AGIN/20150616
201506160500.xml
/AGIN/20150616
201506160504.xml
/AGIN/20150616
201506160508.xml
/AGIN/20150616
201506160512.xml
/AGIN/20150616
201506160516.xml
/AGIN/20150616
201506160520.xml
/AGIN/20150616
201506160524.xml
/AGIN/20150616
201506160528.xml
/AGIN/20150616
201506160532.xml
/AGIN/20150616
201506160536.xml
/AGIN/20150616
201506160540.xml
/AGIN/20150616
201506160544.xml
/AGIN/20150616
201506160548.xml
/AGIN/20150616
201506160552.xml
/AGIN/20150616
201506160556.xml
/AGIN/20150616
201506160600.xml
/AGIN/20150616
201506160604.xml
/AGIN/20150616
201506160608.xml
/AGIN/20150616
201506160612.xml
/AGIN/20150616
201506160616.xml
/AGIN/20150616
201506160620.xml
/AGIN/20150616
201506160624.xml
/AGIN/20150616
201506160628.xml
/AGIN/20150616
201506160632.xml
/AGIN/20150616
201506160636.xml
/AGIN/20150616
201506160640.xml
/AGIN/20150616
201506160644.xml
/AGIN/20150616
201506160648.xml
/AGIN/20150616
201506160652.xml
/AGIN/20150616
201506160656.xml
/AGIN/20150616
201506160700.xml
/AGIN/20150616
201506160704.xml
/AGIN/20150616
201506160708.xml
/AGIN/20150616
201506160712.xml
/AGIN/20150616
201506160716.xml
/AGIN/20150616
201506160720.xml
/AGIN/20150616
201506160724.xml
/AGIN/20150616
201506160728.xml
/AGIN/20150616
201506160732.xml
/AGIN/20150616
201506160736.xml
/AGIN/20150616
201506160740.xml
/AGIN/20150616
201506160744.xml
/AGIN/20150616
201506160748.xml
/AGIN/20150616
201506160752.xml
/AGIN/20150616
201506160756.xml
/AGIN/20150616
201506160800.xml
/AGIN/20150616
201506160804.xml
/AGIN/20150616
201506160808.xml
/AGIN/20150616
201506160812.xml
/AGIN/20150616
201506160816.xml
/AGIN/20150616
201506160820.xml
/AGIN/20150616
201506160824.xml
/AGIN/20150616
201506160828.xml
/AGIN/20150616
201506160832.xml
/AGIN/20150616
201506160836.xml
/AGIN/20150616
201506160840.xml
/AGIN/20150616
201506160844.xml
/AGIN/20150616
201506160848.xml
/AGIN/20150616
201506160852.xml
/AGIN/20150616
201506160856.xml
/AGIN/20150616
201506160900.xml
/AGIN/20150616
201506160904.xml
/AGIN/20150616
201506160908.xml
/AGIN/20150616
201506160912.xml
/AGIN/20150616
201506160916.xml
/AGIN/20150616
201506160920.xml
/AGIN/20150616
201506160924.xml
/AGIN/20150616
201506160928.xml
/AGIN/20150616
201506160932.xml
/AGIN/20150616
201506160936.xml
/AGIN/20150616
201506160940.xml
/AGIN/20150616
201506160944.xml
/AGIN/20150616
201506160948.xml
/AGIN/20150616
201506160952.xml
/AGIN/20150616
201506160956.xml
/AGIN/20150616
201506161000.xml
/AGIN/20150616
201506161004.xml
/AGIN/20150616
201506161008.xml
/AGIN/20150616
201506161012.xml
/AGIN/20150616
201506161016.xml
/AGIN/20150616
201506161020.xml
/AGIN/20150616
201506161024.xml
/AGIN/20150616
201506161028.xml
/AGIN/20150616
201506161032.xml
/AGIN/20150616
201506161036.xml
/AGIN/20150616
201506161040.xml
/AGIN/20150616
201506161044.xml
/AGIN/20150616
201506161048.xml
/AGIN/20150616
201506161052.xml
/AGIN/20150616
201506161056.xml
/AGIN/20150616
201506161100.xml
/AGIN/20150616
201506161104.xml
/AGIN/20150616
201506161108.xml
/AGIN/20150616
201506161112.xml
/AGIN/20150616
201506161116.xml
/AGIN/20150616
201506161120.xml
/AGIN/20150616
201506161124.xml
/AGIN/20150616
201506161128.xml
/AGIN/20150616
201506161132.xml
/AGIN/20150616
201506161136.xml
/AGIN/20150616
201506161140.xml
/AGIN/20150616
201506161144.xml
/AGIN/20150616
201506161148.xml
/AGIN/20150616
201506161152.xml
/AGIN/20150616
201506161156.xml
/AGIN/20150616
201506161200.xml
/AGIN/20150616
201506161204.xml
/AGIN/20150616
201506161208.xml
/AGIN/20150616
201506161212.xml
/AGIN/20150616
201506161216.xml
/AGIN/20150616
201506161220.xml
/AGIN/20150616
201506161224.xml
/AGIN/20150616
201506161228.xml
/AGIN/20150616
201506161232.xml
/AGIN/20150616
201506161236.xml
/AGIN/20150616
201506161240.xml
/AGIN/20150616
201506161244.xml
/AGIN/20150616
201506161248.xml
/AGIN/20150616
201506161252.xml
/AGIN/20150616
201506161256.xml
/AGIN/20150616
201506161300.xml
/AGIN/20150616
201506161304.xml
/AGIN/20150616
201506161308.xml
/AGIN/20150616
201506161312.xml
/AGIN/20150616
201506161316.xml
/AGIN/20150616
201506161320.xml
/AGIN/20150616
201506161324.xml
/AGIN/20150616
201506161328.xml
/AGIN/20150616
201506161332.xml
/AGIN/20150616
201506161336.xml
/AGIN/20150616
201506161340.xml
/AGIN/20150616
201506161344.xml
/AGIN/20150616
201506161348.xml
/AGIN/20150616
201506161352.xml
/AGIN/20150616
201506161356.xml
/AGIN/20150616
201506161400.xml
/AGIN/20150616
201506161404.xml
/AGIN/20150616
201506161408.xml
/AGIN/20150616
201506161412.xml
/AGIN/20150616
201506161416.xml
/AGIN/20150616
201506161420.xml
/AGIN/20150616
201506161424.xml
/AGIN/20150616
201506161428.xml
/AGIN/20150616
201506161432.xml
/AGIN/20150616
201506161436.xml
/AGIN/20150616
201506161440.xml
/AGIN/20150616
201506161444.xml
/AGIN/20150616
201506161448.xml
/AGIN/20150616
201506161452.xml
/AGIN/20150616
201506161456.xml
/AGIN/20150616
201506161500.xml
/AGIN/20150616
201506161504.xml
/AGIN/20150616
201506161508.xml
/AGIN/20150616
201506161512.xml
/AGIN/20150616
201506161516.xml
/AGIN/20150616
201506161520.xml
/AGIN/20150616
201506161524.xml
/AGIN/20150616
201506161528.xml
/AGIN/20150616
201506161532.xml
/AGIN/20150616
201506161536.xml
/AGIN/20150616
201506161540.xml
/AGIN/20150616
201506161544.xml
/AGIN/20150616
201506161548.xml
/AGIN/20150616
201506161552.xml
/AGIN/20150616
201506161556.xml
/AGIN/20150616
201506161600.xml
/AGIN/20150616
201506161604.xml
/AGIN/20150616
201506161608.xml
/AGIN/20150616
201506161612.xml
/AGIN/20150616
201506161616.xml
/AGIN/20150616
201506161620.xml
/AGIN/20150616
201506161624.xml
/AGIN/20150616
201506161628.xml
/AGIN/20150616
201506161632.xml
/AGIN/20150616
201506161636.xml
/AGIN/20150616
201506161640.xml
/AGIN/20150616
201506161644.xml
/AGIN/20150616
201506161648.xml
/AGIN/20150616
201506161652.xml
/AGIN/20150616
201506161656.xml
/AGIN/20150616
201506161700.xml
/AGIN/20150616
201506161704.xml
/AGIN/20150616
201506161708.xml
/AGIN/20150616
201506161712.xml
/AGIN/20150616
201506161716.xml
/AGIN/20150616
201506161720.xml
/AGIN/20150616
201506161724.xml
/AGIN/20150616
201506161728.xml
/AGIN/20150616
201506161732.xml
/AGIN/20150616
201506161736.xml
/AGIN/20150616
201506161740.xml
/AGIN/20150616
201506161744.xml
/AGIN/20150616
201506161748.xml
/AGIN/20150616
201506161752.xml
/AGIN/20150616
201506161756.xml
/AGIN/20150616
201506161800.xml
/AGIN/20150616
201506161804.xml
/AGIN/20150616
201506161808.xml
/AGIN/20150616
201506161812.xml
/AGIN/20150616
201506161816.xml
/AGIN/20150616
201506161820.xml
/AGIN/20150616
201506161824.xml
/AGIN/20150616
201506161828.xml
/AGIN/20150616
201506161832.xml
/AGIN/20150616
201506161836.xml
/AGIN/20150616
201506161840.xml
/AGIN/20150616
201506161844.xml
/AGIN/20150616
201506161848.xml
/AGIN/20150616
201506161852.xml
/AGIN/20150616
201506161856.xml
/AGIN/20150616
201506161900.xml
/AGIN/20150616
201506161904.xml
/AGIN/20150616
201506161908.xml
/AGIN/20150616
201506161912.xml
/AGIN/20150616
201506161916.xml
/AGIN/20150616
201506161920.xml
/AGIN/20150616
201506161924.xml
/AGIN/20150616
201506161928.xml
/AGIN/20150616
201506161932.xml
/AGIN/20150616
201506161936.xml
/AGIN/20150616
201506161940.xml
/AGIN/20150616
201506161944.xml
/AGIN/20150616
201506161948.xml
/AGIN/20150616
201506161952.xml
/AGIN/20150616
201506161956.xml
/AGIN/20150616
201506162000.xml
/AGIN/20150616
201506162004.xml
/AGIN/20150616
201506162008.xml
/AGIN/20150616
201506162012.xml
/AGIN/20150616
201506162016.xml
/AGIN/20150616
201506162020.xml
/AGIN/20150616
201506162024.xml
/AGIN/20150616
201506162028.xml
/AGIN/20150616
201506162032.xml
/AGIN/20150616
201506162036.xml
/AGIN/20150616
201506162040.xml
/AGIN/20150616
201506162044.xml
/AGIN/20150616
201506162048.xml
/AGIN/20150616
201506162052.xml
/AGIN/20150616
201506162056.xml
/AGIN/20150616
201506162100.xml
/AGIN/20150616
201506162104.xml
/AGIN/20150616
201506162108.xml
/AGIN/20150616
201506162112.xml
/AGIN/20150616
201506162116.xml
/AGIN/20150616
201506162120.xml
/AGIN/20150616
201506162124.xml
/AGIN/20150616
201506162128.xml
/AGIN/20150616
201506162132.xml
/AGIN/20150616
201506162136.xml
/AGIN/20150616
201506162140.xml
/AGIN/20150616
201506162144.xml
/AGIN/20150616
201506162148.xml
/AGIN/20150616
201506162152.xml
/AGIN/20150616
201506162156.xml
/AGIN/20150616
201506162200.xml
/AGIN/20150616
201506162204.xml
/AGIN/20150616
201506162208.xml
/AGIN/20150616
201506162212.xml
/AGIN/20150616
201506162216.xml
/AGIN/20150616
201506162220.xml
/AGIN/20150616
201506162224.xml
/AGIN/20150616
201506162228.xml
/AGIN/20150616
201506162232.xml
/AGIN/20150616
201506162236.xml
/AGIN/20150616
201506162240.xml
/AGIN/20150616
201506162244.xml
/AGIN/20150616
201506162248.xml
/AGIN/20150616
201506162252.xml
/AGIN/20150616
201506162256.xml
/AGIN/20150616
201506162300.xml
/AGIN/20150616
201506162304.xml
/AGIN/20150616
201506162308.xml
/AGIN/20150616
201506162312.xml
/AGIN/20150616
201506162316.xml
/AGIN/20150616
201506162320.xml
/AGIN/20150616
201506162324.xml
/AGIN/20150616
201506162328.xml
/AGIN/20150616
201506162332.xml
/AGIN/20150616
201506162336.xml
/AGIN/20150616
201506162340.xml
/AGIN/20150616
201506162344.xml
/AGIN/20150616
201506162348.xml
/AGIN/20150616
201506162352.xml
/AGIN/20150616
201506162356.xml
/AGIN/20150616
201506170000.xml
**/AGIN/20150616
201506170004.xml
/AGIN/20150616  LATEST XML FILE
201506170004.xml**
/AGIN/lostAndfound/20150616
201506160536.xml
/AGIN/lostAndfound/20150616
201506160552.xml
/AGIN/lostAndfound/20150616
201506160608.xml
/AGIN/lostAndfound/20150616
201506160624.xml
Connection close
1

There are 1 answers

4
Kenneth Clark On

Create yourself a Comparator like

public class ModifiedComparator implements Comparator<FTPFile> {

  public int compare(FTPFile leftFile, FTPFile rightFile) {
    return leftFile.getTimestamp().compareTo(rightFile.getTimeStamp());
  }
}

From this you have an ordered list

you can just get the last / first twelve items from your list. depending on your order you provide

List<FTPFile> list = Arrays.asList(files);
Collections.sort(list, new ModifiedComparator());

EDIT

public class LastModifiedComparator implements Comparator<FTPFile> {

  public int compare(FTPFile leftFile, FTPFile rightFile) {
    return -leftFile.getTimestamp().compareTo(rightFile.getTimeStamp());
  }
}

List<FTPFile> list = Arrays.asList(files);
Collections.sort(list, new LastModifiedComparator());   

You can use this method getLastNoOfFiles(list,12) which will return the number of files you want.

private List<FTPFile> getLastNoOfFiles(List<FTPFile> files, int noOfFilesToGet)
{
  List<FTPFile> latestFiles =  new ArrayList<FTPFile>();

   int index = 1;
  for (FTPFile file : files)
  {
    if (noOfFilesToGet < index)
    {
      break;
    }
    latestFiles.add(file);
    index ++;
  }
  return latestFiles;
}