ftp über java

moin moin

hätte da mal ne frage

ist es möglich mittels javabefehlen auf einen ftpserver zuzugreifen?

problem is folgendes
habe ein javaprogramm geschieben mit dem mehrer leute deutschland weit arbeiten
dabei werden die en oder andren dateien auf platte geschrieben
jetzt will ich die daten zentral lagern so das jeder zugriff auf alle daten erhalten kann
aber eben nich manuell sondern automatisch über mein i

dachte da an einen ftp lasse mich aber auch gerne eines besseren belehren

mfg thunderbird
 
Hallo,

Du Witzbold... das hier ist ja wohl was anderes :-P
In dem anderen Thread gings rein um die Möglichkeiten einen Mathematischen Ausdruck auswerten zu können... da war Kreativität gefragt... hier wird aber nach einer praktischen Lösung gefragt, das ist ein wenig was anderes ;-)

Gruß Tom
 
danke limago für den schönen kleinen ftp zugang nur ahb ich gelesen das man bei dem nicht in den passiv modus schalten kann somit klappt das mit dem leider nicht
den der ftp sitzt hinter einer firewall und darf nur den port 21 benutzen

und auch danke an dich thomas aber ich bin zu doof das ding zum laufen zu bringen
wollte nur die excambles ftp.java mal zum laufen bringen aber des geht nich

starte sie mit den parametern -s 192.168.5.250 user passw file1.txt file2.txt
bekomme aber immer wieder die fehlermeldung:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory
at org.apache.commons.net.ftp.FTPClient.<init>(FTPClient.java:303)
at ftp.main(ftp.java:77)

verursacher der ganzen sache ist ftp = new FTPClient(); also zeile 77 der excambles.ftp.java
denn danach bekomm ich meine testausgabe nicht mehr

was mach ich falsch mit dem ding
 
Zuletzt bearbeitet:
so ich hab mal wieder zeitgefunden an meinem programm weiter zu machen und hab den jakarta zum laufen bekommen und schon hab ich das nächste problem
er listet mir keine dateien auf

Java:
  public void Fftptest() {
    FTPClient ftp;
    ftp = new FTPClient();

    try {
      ftp.connect("192.168.5.250");
      System.out.println("Connected to " + "192.168.5.250" + ".");
    }
    catch (IOException e) {
      System.out.println("Not Connected");
    }
    
    int reply = ftp.getReplyCode();
    if (!FTPReply.isPositiveCompletion(reply)) {
      System.err.println("FTP server refused connection.");
      System.exit(1);
    }
    try {
      boolean test = ftp.login("tool", "tool");
      System.out.println("Remote system is " + ftp.getSystemName());
      ftp.setFileType(FTP.ASCII_FILE_TYPE);
      ftp.enterLocalPassiveMode();
      test = ftp.enterRemotePassiveMode();
      System.out.println(ftp.getPassiveHost() + " -> " + ftp.getPassivePort());
      System.out.println(ftp.printWorkingDirectory());

// Problemfall <------------------------------------      
      FTPFile[] datei = ftp.listFiles(ftp.printWorkingDirectory());
      System.out.println(datei.length);
//      for(int i1 = 0; i1 < datei.length; i1++) {
//        System.out.println(datei[i1]);
//      }
    }
    catch (IOException e) {
      System.out.println("Username oder Passwort falsch");
    }
    try {
      ftp.logout();
      System.out.println("User abgemeldet");
    }
    catch (IOException e) {
      System.out.println("User kann nicht abgemeldet werden");
    }
    try {
      ftp.disconnect();
      System.out.println("FTP disconnected");
    }
    catch (IOException e) {
      System.out.println("FTP-Verbindung kann nicht beendet werden");
    }
  }
ich bekomme an der besagten stelle keine dateien zurück das array ist immer 0 lang
wenn ich listNames versuche bekomme ich immer bei dem versuch die länge auszulesen eine nullPointerexception

in den logs von dem ftp-server kann ich auch sehen der er den list befehl garnicht ausgeführt hat

in dem verzeichniss sind aber 3 datei und 3 verzeichnisse die ich auch sehe wenn ich mit dem account mit nem ftp-programm mich einlogge
wo leigt das problem?
 
Zuletzt bearbeitet:
ok hab mein problem gelöst der ftp läuft jetzt
bin nur auf etwas gestosen was ich mir nicht erklären kann

wenn ich einen butten drücke der den filetransfer auslöst wird zuerst eine funktion aufgerufen die den fensterinhalt löscht und den banalen text "daten werden übertragen" in das fenster schreibt dann wird die funktion für den transfer aufgerufen und dann wieder die funktion den verherigen inhalt wieder in das fenster rein klamüsert
das ganze sieht dann wie folg aus

Java:
.
.
.  //actionlistener
    if(quelle == Bfarmupload) {
      Fladenbild(); //bild löschen
      Fftp_c_to_s(); //filetransfer
      Ffarm(); //altes bild wieder öffnen
    }
.
.
.
public void Fladenbild() {
    cp.removeAll(); //panel löschen und neuen inhalt einfügen
    cp.setLayout(null);
    JLabel Lladen = new JLabel("Daten werden übertragen");
    Lladen.setBounds(200, 350, 200, 13);
    cp.add(Lladen);
    Lthunderbird.setBounds(cp.getWidth() - 140, cp.getHeight() - 16, 140, 15);
    cp.add(Lthunderbird);
    cp.updateUI();
  }
.
.
.
  public void Fftp_c_to_s() {
//    blabla
  }
.
.
.
  public void Ffarm() {
    cp.removeAll(); //panel löschen und neuen inhalt einfügen
    cp.setLayout(null);

//    blabla

    Lthunderbird.setBounds(cp.getWidth() - 140, cp.getHeight() - 16, 140, 15);
    cp.add(Lthunderbird);
    cp.updateUI();

  }

das problem dabei ist nun das ich den ladenbildschirm nicht sehe
ich sehe mein altes bild mit gedrücktem button bis der transfer abgeschlossen ist
warum is das so?
und wie kann ich es ändern?
 
Hmm ... tja ... also da wird offensichtlich trotz updateUI() das Panel nicht neu gezeichnet. Ich würde mal probieren das updateUI() durch validate() oder invalidate() zu ersetzen. Eins von beidem zeichnet die aktuelle Komponente und alle übergeordneten neu, das andere alle untergeordneten. Bisher hat bei mir eins von beidem immer geklappt, wenn updateUI() schon nicht wollte.
 
Zurück