Auf dem FTP Server prüfen ob es ein Verzeichnis oder eine Datei ist!

BabyMitSchnully

Erfahrenes Mitglied
Hi Leute,

ich habe das Gefühl, dass ich gerade absolut blind vom Programmieren geworden bin.

Ich habe einen sehr abgespeckten FTP Client geschrieben. Dieser soll nichts anderes machen, als Verzeichnisse und Dateien vom FTP Server über FTP auslesen.

Dazu habe ich eine Socketverbindung zum FTP Server aufgebaut.
Nachdem ich mich in den Passiv Modus "PASV" begeben habe, rufe ich die Dateiliste für das aktuelle Verzeichnis auf mit "NLST".
Anschließend lese ich wie im folgenden Code zu sehen die Liste aus. Das funktioniert so weit.

Doch wie kann ich jetzt prüfen, ob das was in meinem StringBuffer liegt eine Datei oder ein Verzeichnis ist? Ich kann es nicht in ein "File" verwandeln, wenn ich z.B. Den Umweg über die URL Klasse nehme.

Code:
  public void listenToServer() {
    //Listeninhalt
    StringBuffer sb = new StringBuffer();

    try {
      int amount = 1;
      while (amount > 0) {
        amount = this.in.read();
        //Steuercodes umwandeln in CHAR und dem Stringbuffer anfügen.
        sb.append((char)amount);
      }
    }
    catch (IOException ioe) {
      System.out.println(ioe);
    }
    this.cleanDataConnection();
    
    System.out.println(sb.toString());
    
    if (this.ftpClient.isListCommand()){
      //Die Liste teilen, damit man weiter arbeiten kann.
      String test[] = sb.toString().split("\n");
      int i = test.length;
      
      for (int n = 2; n < i; n++) {
        File file = null;
        //Hier muss geprüft werden, ob es eine Datei oder ein Verzeichniss ist.
        //System.out.println(test[n] + " : " + file.isDirectory());
      }
    }

  }

Nun. Was kann ich tun um das ganze hin zu bekomme?

Gruß
Chris
 
Erstens : [code=java][/code] Code-Tags verwenden ... die normalen [code][/code] Tags sind nicht so schön und haben auch kein Syntaxhighlightning. Außerdem bleibt dann die original-Formatierung *wenn du wie in den Konventionen beschrieben mit TAB arbeitest* erhalten.
Zweitens : wenn ich mich recht entsinne ist das Command "LIST" und nicht "NLST" ... kommt drauf an welchen FTP-Server du verwendest was
Drittens : eine sinnvolle Info wäre damit wir dementsprechend mal nachgucken können. Es nützt nichts wenn wir dich jetzt mit haufen nicht-RFC-Commands zubomben die für sämtliche andere Server gehen aber nicht für deinen ...
 
Hi.

Zu 1. Ich nutzte nur die Vorlage
Zu 2 es ist das Command List nimmt der Server leider nicht. Warum auch immer
Zu 3. Da ich versuche JAVA gerecht zu werden, nutze ich lediglich die RAW Commands. Dann funktioniert es hoffentlich überall.

Ich hoffe, dass macht das deutlicher
Gruß
Chris
 
Es könnte auch weiterhelfen wenn du mal den Namen deines Servers mit Version postest. Evtl. kennt jemand anderes ja auch noch die genauen Spezifikationen zu deinem Server.
 
Wie gesagt ... ob das Command nun wirklich "LIST" oder "NLST" heißt weis ich nich genau ... bin aber der Meinung das bei FileZilla Server und auch in verbindung mit IE als Client so gesehen zu haben ... kann mich aber auch irren da es verdammt lange her ist.
Das du erstmal nur dierekt RAW arbeitest habe ich doch garnicht bemängelt. Ich weis zwar das die Apache-Commons auch Klassen für FTP haben ... aber da ich selber nie damit gearbeitet habe müssten hier mal unsere Profis ran.
 
Hi. Wollte auch nicht unhöflich wirken. Es ist nur ziemlich verzwickt. Ich Teste mit dem aktuellen FileZilla Server. Letztlich soll es aber mit jedem Server kompatible sein.

Gruß
Chris
 
Also laut offizieller FileZilla-Page ist das Command definitiv LIST und nicht NLST ... vielleicht löst das deine Probleme.
 
Darf ich mich jetzt dazu noch äußern das ich das bereits seit 2 Posts versucht habe dir klar zumachen oder muss ich mir das jetzt klemmen weils sonst echt zu peinlich wird ? *spasseshalber kann man ruhig mal so eine Frage stellen =)*
 

Neue Beiträge

Zurück