Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

sun.net.ftp.FTPClient

Empfohlene Antworten

Veröffentlicht

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

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.

[...]

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/

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.