Java Language
FTP (File Transfer Protocol)
Ricerca…
Sintassi
- Connessione FTPClient (host InetAddress, porta int)
- Login FTPClient (nome utente stringa, password stringa)
- FTPClient disconnect ()
- FTPReply getReplyStrings ()
- boolean storeFile (String remote, InputStream local)
- OutputStream storeFileStream (String remote)
- booleano setFileType (int fileType)
- booleano completePendingCommand ()
Parametri
parametri | Dettagli |
---|---|
ospite | O il nome host o l'indirizzo IP del server FTP |
porta | La porta del server FTP |
nome utente | Il nome utente del server FTP |
parola d'ordine | La password del server FTP |
Connessione e accesso a un server FTP
Per iniziare a utilizzare FTP con Java, sarà necessario creare un nuovo FTPClient
e quindi connettersi e accedere al server utilizzando .connect(String server, int port)
e .login(String username, String password)
.
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);
}
}
Ora abbiamo fatto le basi. Ma cosa succede se si verifica un errore durante la connessione al server? Vogliamo sapere quando qualcosa va storto e ricevere il messaggio di errore. Aggiungiamo un po 'di codice per rilevare gli errori durante la connessione.
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 {
}
Analizziamo ciò che abbiamo appena fatto, passo dopo passo.
showServerReply(ftp);
Questo si riferisce a una funzione che faremo in un secondo momento.
int replyCode = ftp.getReplyCode();
Questo preleva il codice di risposta / errore dal server e lo memorizza come un intero.
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.printIn("Operation failed. Server reply code: " + replyCode)
return;
}
Controlla il codice di risposta per vedere se c'è stato un errore. Se si è verificato un errore, verrà semplicemente stampato "Operazione non riuscita. Codice di risposta del server:" seguito dal codice di errore. Abbiamo anche aggiunto un blocco try / catch a cui aggiungeremo nel prossimo passaggio. Successivamente, creiamo anche una funzione che controlli ftp.login()
per gli errori.
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");
}
Rompiamo anche questo blocco.
boolean success = ftp.login(user, pass);
Questo non tenterà solo di accedere al server FTP, ma memorizzerà anche il risultato come booleano.
showServerReply(ftp);
Questo controllerà se il server ci ha inviato messaggi, ma prima dovremo creare la funzione nel passaggio successivo.
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
Questa affermazione controllerà se abbiamo effettuato l'accesso con successo; in tal caso, stamperà "LOGGED IN SERVER", altrimenti stamperà "Impossibile accedere al server". Questo è il nostro script finora:
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 {
}
}
}
Ora dopo creiamo il blocco Catch nel caso in cui ci imbattiamo in eventuali errori con l'intero processo.
} catch (IOException ex) {
System.out.println("Oops! Something went wrong.");
ex.printStackTrace();
}
Il blocco catch completato ora stamperà "Oops! Qualcosa è andato storto". e lo stacktrace se c'è un errore. Ora il nostro ultimo passo è creare lo showServerReply()
stiamo usando da un po 'di tempo.
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);
}
}
}
Questa funzione accetta un FTPClient
come variabile e lo chiama "ftp". Successivamente memorizza qualsiasi risposta del server dal server in un array di stringhe. Quindi controlla se qualche messaggio è stato memorizzato. Se ce n'è uno, stampa ciascuno di essi come "SERVER: [rispondi]". Ora che abbiamo fatto quella funzione, questo è lo script completato:
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();
}
}
}
Per prima cosa è necessario creare un nuovo FTPClient
e provare a connettersi al server e ad .connect(String server, int port)
utilizzando .connect(String server, int port)
e .login(String username, String password)
. È importante connettersi e accedere utilizzando un blocco try / catch nel caso in cui il nostro codice non riesca a connettersi con il server. Dovremo anche creare una funzione che controlli e visualizzi tutti i messaggi che possiamo ricevere dal server mentre proviamo a connetterci e ad accedere. Chiameremo questa funzione " 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();
}
}
}
Dopo questo, ora dovresti avere il tuo server FTP connesso allo script Java.