2015-06-17 2 views
1

Я хочу прочитать 12 двенадцать последних файлов XML на FTP-сервере с помощью FTP-клиента, но я получаю только последний и последний.Как получить двенадцать последних файлов на ftp-сервере с помощью ftp-клиента в JAVA

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

Создать себе Comparator как

public class ModifiedComparator 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 ModifiedComparator()); 

РЕДАКТИРОВАНИЕ

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()); 

Вы можете использовать этот метод getLastNoOfFiles(list,12) который будет возвращать количество файлов, которые вы хотите.

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; 
} 
+0

, но каждые 5 минут файл на ftp-сервере изменяется. Спасибо за ответ Kenneth Clark :) –

+0

Похоже, вам действительно нужно проверить серверную сторону, иначе вам нужно будет подключать и сканировать файлы каждые 5 минут ... –

+0

Фактически, используя мой код, я всегда получаю последний последний файл каждые 5 минут, но моя проблема в том, что я не смогу получить последние двенадцать последних файлов. –

Смежные вопросы