Suche…


Syntax

  • FTPClient-Verbindung (InetAddress-Host, int-Port)
  • FTPClient-Login (String-Benutzername, String-Passwort)
  • FTPClient disconnect ()
  • FTPReply getReplyStrings ()
  • boolean storeFile (String remote, InputStream local)
  • OutputStream storeFileStream (Zeichenfolge remote)
  • boolean setFileType (int fileType)
  • boolean completePendingCommand ()

Parameter

Parameter Einzelheiten
Wirt Entweder der Hostname oder die IP-Adresse des FTP-Servers
Hafen Der FTP-Server-Port
Nutzername Der FTP-Server-Benutzername
Passwort Das FTP-Server-Passwort

Anschließen und Anmelden an einem FTP-Server

Um mit der Verwendung von FTP mit Java zu beginnen, müssen Sie einen neuen FTPClient erstellen und sich dann mit .connect(String server, int port) und .login(String username, String password) mit dem Server verbinden.

import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
//Import all the required resource for this project.

public class FTPConnectAndLogin {
    public static void main(String[] args) {
        // SET THESE TO MATCH YOUR FTP SERVER //
        String server = "www.server.com"; //Server can be either host name or IP address.
        int port = 21;
        String user = "Username";
        String pass = "Password";

        FTPClient ftp = new FTPClient;
        ftp.connect(server, port);
        ftp.login(user, pass);
    }
}

Jetzt haben wir die Grundlagen fertig. Was ist, wenn wir einen Fehler beim Verbindungsaufbau zum Server haben? Wir möchten wissen, wann etwas schief geht, und die Fehlermeldung erhalten. Fügen Sie etwas Code hinzu, um Fehler beim Verbindungsaufbau abzufangen.

try {
    ftp.connect(server, port);
    showServerReply(ftp);
    int replyCode = ftp.getReplyCode();
    if (!FTPReply.isPositiveCompletion(replyCode)) {
        System.out.printIn("Operation failed. Server reply code: " + replyCode)
        return;
    }
    ftp.login(user, pass);
} catch {

}

Lassen Sie uns das, was wir gerade gemacht haben, Schritt für Schritt zusammenbrechen.

showServerReply(ftp);

Dies bezieht sich auf eine Funktion, die wir in einem späteren Schritt ausführen werden.

int replyCode = ftp.getReplyCode();

Dadurch wird der Antwort- / Fehlercode vom Server abgerufen und als Ganzzahl gespeichert.

if (!FTPReply.isPositiveCompletion(replyCode)) {
    System.out.printIn("Operation failed. Server reply code: " + replyCode)
    return;
}

Dies überprüft den Antwortcode, um festzustellen, ob ein Fehler aufgetreten ist. Wenn ein Fehler aufgetreten ist, wird einfach "Vorgang fehlgeschlagen. Antwortcode des Servers:" gefolgt vom Fehlercode gedruckt. Wir haben auch einen Try / Catch-Block hinzugefügt, den wir im nächsten Schritt hinzufügen werden. Als Nächstes erstellen wir eine Funktion, die ftp.login() auf Fehler überprüft.

boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
    System.out.println("Failed to log into the server");
        return;
    } else {
        System.out.println("LOGGED IN SERVER");
    }

Lassen Sie uns auch diesen Block abbauen.

boolean success = ftp.login(user, pass);

Dadurch wird nicht nur versucht, sich beim FTP-Server anzumelden, sondern das Ergebnis wird auch als Boolean gespeichert.

showServerReply(ftp);

Dadurch wird geprüft, ob der Server uns Nachrichten gesendet hat. Im nächsten Schritt müssen Sie jedoch zuerst die Funktion erstellen.

if (!success) {
System.out.println("Failed to log into the server");
    return;
} else {
    System.out.println("LOGGED IN SERVER");
}

Diese Anweisung überprüft, ob wir uns erfolgreich angemeldet haben. Wenn ja, wird "LOGGED IN SERVER" gedruckt, andernfalls "Anmeldung beim Server fehlgeschlagen". Dies ist unser bisheriges Skript:

import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FTPConnectAndLogin {
    public static void main(String[] args) {
        // SET THESE TO MATCH YOUR FTP SERVER //
        String server = "www.server.com";
        int port = 21;
        String user = "username"
        String pass = "password"

        FTPClient ftp = new FTPClient
        try {
            ftp.connect(server, port)
            showServerReply(ftp);
            int replyCode = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(replyCode)) {
                    System.out.println("Operation failed. Server reply code: " + replyCode);
                    return;
                }
            boolean success = ftp.login(user, pass);
            showServerReply(ftp);
            if (!success) {
                System.out.println("Failed to log into the server");
                return;
            } else {
                System.out.println("LOGGED IN SERVER");
            }
        } catch {

        }
    }
}

Nun erstellen wir als Nächstes den Catch-Block, falls im gesamten Prozess Fehler auftreten.

} catch (IOException ex) {
    System.out.println("Oops! Something went wrong.");
    ex.printStackTrace();
}

Der abgeschlossene Auffangblock druckt jetzt "Oops! Etwas ist schief gelaufen". und der stacktrace, wenn ein Fehler vorliegt. Nun ist der letzte Schritt das Erstellen des showServerReply() wir seit einiger Zeit verwenden.

private static void showServerReply(FTPClient ftp) {
    String[] replies = ftp.getReplyStrings();
    if (replies != null && replies.length > 0) {
    for (String aReply : replies) { 
        System.out.println("SERVER: " + aReply);
        }
    }
}

Diese Funktion nimmt einen FTPClient als Variable und nennt ihn "ftp". Danach speichert er alle Serverantworten vom Server in einem String-Array. Als nächstes wird geprüft, ob Nachrichten gespeichert wurden. Wenn es welche gibt, werden diese als "SERVER: [Antwort]" ausgegeben. Nun, da wir diese Funktion erledigt haben, ist dies das vollständige Skript:

import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FTPConnectAndLogin {
    private static void showServerReply(FTPClient ftp) {
        String[] replies = ftp.getReplyStrings(); 
        if (replies != null && replies.length > 0) {
        for (String aReply : replies) {
            System.out.println("SERVER: " + aReply);
            }
        }
    }

    public static void main(String[] args) {
        // SET THESE TO MATCH YOUR FTP SERVER //
        String server = "www.server.com";
        int port = 21;
        String user = "username"
        String pass = "password"

        FTPClient ftp = new FTPClient
        try {
            ftp.connect(server, port)
            showServerReply(ftp);
            int replyCode = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(replyCode)) {
                System.out.println("Operation failed. Server reply code: " + replyCode);
                return;
            }
            boolean success = ftp.login(user, pass);
            showServerReply(ftp);
            if (!success) {
                System.out.println("Failed to log into the server");
                return;
            } else {
                System.out.println("LOGGED IN SERVER");
            }
        } catch (IOException ex) {
            System.out.println("Oops! Something went wrong.");
            ex.printStackTrace();
        }
    }
}

Wir müssen zuerst einen neuen FTPClient erstellen und versuchen, eine Verbindung zum Server FTPClient und ihn unter Verwendung von .connect(String server, int port) und .login(String username, String password) . Es ist wichtig, sich über einen try / catch-Block zu verbinden und sich anzumelden, falls unser Code keine Verbindung zum Server herstellen kann. Wir müssen auch eine Funktion erstellen, die alle Nachrichten überprüft und anzeigt, die wir vom Server erhalten, wenn wir versuchen, eine Verbindung herzustellen und sich showServerReply(FTPClient ftp) . Wir nennen diese Funktion " showServerReply(FTPClient ftp) ".

import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FTPConnectAndLogin {
    private static void showServerReply(FTPClient ftp) {
        if (replies != null && replies.length > 0) {
        for (String aReply : replies) {
            System.out.println("SERVER: " + aReply);
            }
        }
    }

public static void main(String[] args) {
    // SET THESE TO MATCH YOUR FTP SERVER //
    String server = "www.server.com";
    int port = 21;
    String user = "username"
    String pass = "password"

FTPClient ftp = new FTPClient
try {
    ftp.connect(server, port)
    showServerReply(ftp);
    int replyCode = ftpClient.getReplyCode();
    if (!FTPReply.isPositiveCompletion(replyCode)) {
            System.out.println("Operation failed. Server reply code: " + replyCode);
            return;
        }
    boolean success = ftp.login(user, pass);
    showServerReply(ftp);
    if (!success) {
        System.out.println("Failed to log into the server");
            return;
        } else {
            System.out.println("LOGGED IN SERVER");
        }
    } catch (IOException ex) {
        System.out.println("Oops! Something went wrong.");
        ex.printStackTrace();
        }
    }
}

Danach sollten Sie jetzt Ihren FTP-Server mit Ihrem Java-Skript verbunden haben.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow