Verzeichnis auf fremden Server durchsuchen

mariaT

Grünschnabel
Hallo ng,

ich möchte gerne alle Dateinamen in einem Verzeichnis auf einem ftp-Server ermitteln, aber komme damit einfach nicht weiter.

Die Klasse File bietet ja einen Konstruktor, dem eine URI übergeben werden kann:

Code:
File dir = new File(URI uri);

Aber irgendwie klappt es nicht:

Mein letzter Versuch:

Code:
URI server_dir = new URI("http://www.myserver.de/pics/");
File dir = new File(server_dir);

Hierbei erhalte ich folgende Exception:
java.lang.IllegalArgumentException: URI scheme is not "file"

Wenn ich aber "http://" durch "file:/" ersetze erhalte ich auch nur eine Nullpointer-Exception, weil dabei offenbar nur lokal auf C: geschaut wird.

Kann jemand weiter helfen?

Vielen Dank und Grüße,
Maria
 
Hallo !

Du musst auf jeden Fall ja auch irgendwo Usernamen und Passwort angeben. Zum Einen gibt es Bibliotheken für den Dateiaustausch via FTP, außerdem kannst du es so ähnlich machen, wie du es schon versucht hast:

Java:
URL url = new URL("ftp://username:passwort@domain.de/datei.txt;type=i");
URLConnection urlc = url.openConnection();
InputStream is = urlc.getInputStream(); // runterladen
OutputStream os = urlc.getOutputStream(); // hochladen

Wie eine URL richtig aufgebaut sein muss, findest du hier:
RFC1738

Gruß Stefan
 
Hallo Stefan,

vielen Dank für deinen Hinweis!

Mit dem folgenden Code erhalte ich tatsächlich einen InputStream auf mein Verzeichnis:
Code:
URL url = new URL("ftp://username:p_word@www.myserver.de/pics/");
URLConnection urlc = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(urlc.getInputStream()));

Nur leider weiß ich nicht, wie ich bequem an die Dateinamen der Bilder unter "pics" komme.

Ich könnte nun natürlich den von InputStream zurück gegebenen Text parsen (z.B. nach Wort mit ".jpg" suchen), aber es muss doch auch irgendwie möglich sein, aus dem InputStream ein File-Objekt zu generieren, oder?

Vielen Dank nochmal,
Maria

Hier mein - unschöner - Workaround:

Code:
StringBuffer sb = new StringBuffer();
while(reader.ready()){
	String line = reader.readLine();
         // Beispielzeile: 
         //line == "-rw-r--r--   1 username ftpusers  1616678 Oct 14  2005 image001.jpg"	
         sb.append(line);
}

// Dann den Text parsen und alle Strings mit .jpg rausfiltern.
 
Zurück