besorge die neueste Datei von ftp

8

Versuchen Sie, ein einfaches Plugin zu erstellen, das sich einfach mit einer FTP-Site verbindet, die neueste Datei sucht und sie dann herunterlädt. Es wird jedoch nicht die neueste Datei abgerufen.

Ich verwende den org.apache.commons.net.ftp.ftpclient für alles.

Hier ist mein Code

%Vor%

Er ruft die Liste der Dateien ab und gibt dann eine Datei zurück, es ist nicht die letzte Datei. Gibt es eine andere Möglichkeit Dateiänderungsdaten mit dem FTPClient zu vergleichen oder kann mir jemand zeigen, was ich falsch mache. Danke.

    
Ryan 29.09.2010, 19:07
quelle

2 Antworten

7

Anstelle Ihrer "lastFileModified" -Methode würde ich einen Komparator erstellen. Es wäre einfacher, die Sortiermethode zu schreiben:

%Vor%

Dann ist es viel einfacher, die "letzte" FTP-Datei zu bekommen:

%Vor%

Um zu Ihrem Problem zurückzukehren: Der Zeitstempel "lastModified" ist nicht mit der FTP-Upload-Reihenfolge verknüpft. Wenn Sie eine Datei über das FTP-Protokoll hochladen, kann der ursprüngliche Zeitstempel der Datei beibehalten werden.

Wenn also Datei1 älter als Datei2 ist, gibt Ihre Methode immer Datei2 zurück, auch wenn Datei2 vor Datei1 auf dem FTP-Server hochgeladen wird.

Ich denke, dass es unmöglich ist, die letzte hochgeladene Datei zu bestimmen. Diese Information wird nicht vom FTP-Protokoll gespeichert. Sie können das nur tun, wenn Sie die "put" -Methode Ihres FTP-Clients überladen:

%Vor%     
Benoit Courtine 29.09.2010, 19:30
quelle
0

Ich sehe nur einen Fehler:

%Vor%

Wenn die erste Datei die zuletzt geänderte Datei wäre, würde die Methode null zurückgeben, was ein potenzielles NullPointerException verursachen würde.

Ändern Sie es in

%Vor%

und die Logik sollte stimmen.

Wenn die erwartete Datei immer noch nicht zurückgegeben wird, hat die fragliche Datei höchstwahrscheinlich nicht das erwartete Datum der letzten Änderung. Fügen Sie der Schleife for in der Methode so etwas hinzu:

%Vor%

Und schau genauer hin.

    
BalusC 29.09.2010 19:22
quelle

Tags und Links