Krain Geschrieben 25. Januar 2006 Geschrieben 25. Januar 2006 Grüße zusammen, Habe ein kleines Problem bei dem ich auf dem Schlauch stehe bei dem ihr mir sicher weiterhelfen könnt. Ich lese über sun.net.ftp.FTPClient die Dateien aus einem FTP-Server aus und zwar über die Funktion list() des FTPClient. FtpClient client = new FtpClient("linden.ag"); client.login("*******","******"); System.out.println(client.getResponseString()); System.out.println(client.getResponseString()); TelnetInputStream in = client.list(); int c = 0; StringBuffer line = new StringBuffer(); while((c = in.read()) != -1) { if(c==10) { FTPFile file = new FTPFile(line); this.fileVector.add(file); line.delete(0,line.length()); } else { line.append((char)c); } } Soweit so gut. Die Frage ist nur, ob ich wirklich davon ausgehen kann, dass mir jeder FTP-Server die line im selben Format zurückgibt. Ich erhalte folgendes: [Rechte][typ][user][group][size][month][dayofmonth][time][filename] bsp: -rw-r--r-- 1 user ftpusers 8840 Jan 25 08:50 test.jpg Was mich an dem Format wundert ist, dass im Dateidatum nicht das Jahr irgendwo mit auftaucht. Zudem suche ich nach einer schönen Möglichkeit, aus dem Format die filenames auszulesen - auch unter der Annahme, dass im filename Leerzeichen vorhanden sein könnten. Mit dem StringTokenizer muss ich 100%ig wissen, dass die ersten 8 Parameter auch wirklich immer so stehen bleiben. Kann ich also davon ausgehen, dass das Format, wie ich es oben angegeben habe von jedem FTP-Server so zurückgegeben wird? Wenn ja: Gibt es eine schönere Variante, den String zu zerlegen außer über den StringTokenizer? Gruß Markus Zitieren
Whatever Geschrieben 25. Januar 2006 Geschrieben 25. Januar 2006 Da die Funktion List() lediglich den FTP-Command "LIST" an den Server sendet, hab ich mal in der entsprechend RFC nachgeschaut. Dort heißt es: [...] LIST (LIST) This command causes a list to be sent from the server to the passive DTP. If the pathname specifies a directory or other group of files, the server should transfer a list of files in the specified directory. If the pathname specifies a file then the server should send current information on the file. A null argument implies the user's current working or default directory. The data transfer is over the data connection in type ASCII or type EBCDIC. (The user must ensure that the TYPE is appropriately ASCII or EBCDIC). Since the information on a file may vary widely from system to system, this information may be hard to use automatically in a program, but may be quite useful to a human user. [...] Zitieren
perdian Geschrieben 25. Januar 2006 Geschrieben 25. Januar 2006 Gibt es eine schönere Variante, den String zu zerlegen außer über den StringTokenizer?Ja, wenn du nicht unbedingt auf den SUN Client angewiesen bist: Wechsel das FTP Package. Die sun.* Klassen können sich jederzeit ändern und/oder aus dem JDK komplett verschwinden. Sicherer und nebenbei auch noch deutlich komfortabler ist ein "richtiges" FTP Client Package, wie z.B. Jakarta Commons NET http://jakarta.apache.org/commons/net/ oder direkt noch eine Abstraktionsstufe höher: Jakarta Commons VFS http://jakarta.apache.org/commons/vfs/ Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.