Télécharger dossier dans un serveur FTP
Résolu
jayzman
Messages postés
54
Statut
Membre
-
jayzman Messages postés 54 Statut Membre -
jayzman Messages postés 54 Statut Membre -
bonjour,je voudrai savoir comment télécharger un dossier contient plusieurs fichiers dans un serveur FTP et stocker dans un disque local,
j'ai un code pour lister les fichiers dans le dossier mais pas le stocker dans un disque dur local,
comment faire?
besoin d'aide,
voici le code
Merci
jayzman
j'ai un code pour lister les fichiers dans le dossier mais pas le stocker dans un disque dur local,
comment faire?
besoin d'aide,
voici le code
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class FTPListRecursiveDemo {
static void listDirectory(FTPClient ftpClient, String parentDir,
String currentDir, int level) throws IOException {
String dirToList = parentDir;
if (!currentDir.equals("")) {
dirToList += "/" + currentDir;
}
FTPFile[] subFiles = ftpClient.listFiles(dirToList);
if (subFiles != null && subFiles.length > 0) {
for (FTPFile aFile : subFiles) {
String currentFileName = aFile.getName();
if (currentFileName.equals(".")
|| currentFileName.equals("..")) {
// skip parent directory and directory itself
continue;
}
for (int i = 0; i < level; i++) {
System.out.print("\t");
}
if (aFile.isDirectory()) {
System.out.println("[" + currentFileName + "]");
listDirectory(ftpClient, dirToList, currentFileName, level + 1);
} else {
System.out.println(currentFileName);
}
}
}
}
public static void main(String[] args) {
String server = "10.11.15.137";
int port = 21;
String user = "stgzo";
String pass = "jayzman1";
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(server, port);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Connect failed");
return;
}
boolean success = ftpClient.login(user, pass);
if (!success) {
System.out.println("Could not login to the server");
return;
}
String dirToList = "/var/opt/ericsson/nms_umts_pms_seg/segment1/UETR/SubNetwork=ANRNC02/MeContext=ANRNC02";
listDirectory(ftpClient, dirToList, "", 0);
} catch (IOException ex) {
System.out.println("Oops! Something wrong happened");
ex.printStackTrace();
} finally {
// logs out and disconnects from server
try {
if (ftpClient.isConnected()) {
ftpClient.logout();
ftpClient.disconnect();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
Merci
jayzman
A voir également:
- Télécharger dossier dans un serveur FTP
- Télécharger clavier arabe - Télécharger - Divers Web & Internet
- Telecharger word 2013 - Télécharger - Traitement de texte
- Telecharger ccleaner gratuit - Télécharger - Nettoyage
- Télécharger instagram pc - Télécharger - Divers Communication
- Changer serveur dns - Guide
1 réponse
Bonjour,
Je ne sais pas est ce que vous avez déjà fait une recherche, mais des codes de la sorte existent déjà tel que le code sur :
https://www.codejava.net/java-se/ftp/java-ftp-file-download-tutorial-and-example
Vous avez déjà tous ce qu'il vous faut :
une fois les répertoires détectés, il faut les créer non pas les afficher, et si c'est un fichier alors vous le détéchargez :
Je ne sais pas est ce que vous avez déjà fait une recherche, mais des codes de la sorte existent déjà tel que le code sur :
https://www.codejava.net/java-se/ftp/java-ftp-file-download-tutorial-and-example
Vous avez déjà tous ce qu'il vous faut :
une fois les répertoires détectés, il faut les créer non pas les afficher, et si c'est un fichier alors vous le détéchargez :
// Extrait de votre code
if (aFile.isDirectory()) {
(new java.io.File(currentFileName)).mkdir();
// Continuez le traitement récursive
listDirectory(ftpClient, dirToList, currentFileName, level + 1);
} else {
// Code de téléchargement ici
}
oui j'ai déjà vue votre exemple mais il télécharge juste un fichier mais je vais télécharger tous les fichiers dans un dossier,j'ai un autre programme il marche bien mais le taille des fichiers ne seront pas le même,je ne sais pas où est mon erreur,
est ce qu'il y a un autre moyen
merci
voici mon code
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import static java.lang.System.in; import static java.lang.System.out; import java.text.DateFormat; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; public class FTPListRecursiveDemo { public static void main(String[] args) throws IOException { String server = "10.11.15.137"; String username = "stgzo"; String password = "jayzman1"; String folder = "/var/opt/ericsson/nms_umts_pms_seg/segment1/UETR/SubNetwork=ANRNC02/MeContext=ANRNC02"; String destinationFolder = "C:\\cygwin\\home\\colombna\\decoder\\traces\\"; // Connect and logon to FTP Server FTPClient ftp = new FTPClient(); ftp.connect( server ); ftp.login( username, password ); System.out.println("Connected to " + server + "."); System.out.print(ftp.getReplyString()); // List the files in the directory ftp.changeWorkingDirectory( folder ); FTPFile[] files = ftp.listFiles(); System.out.println( "Number of files in dir: " + files.length ); DateFormat df = DateFormat.getDateInstance( DateFormat.SHORT ); for( int i=0; i<files.length; i++ ) { //Date fileDate = files[ i ].getTimestamp().getTime(); //if( fileDate.compareTo( start.getTime() ) >= 0 && // fileDate.compareTo( end.getTime() ) <= 0 ) //{ // Download a file from the FTP Server System.out.print( df.format( files[ i ].getTimestamp().getTime() ) ); System.out.println( "\t" + files[ i ].getName() ); File file = new File( destinationFolder + File.separator + files[ i ].getName() ); FileOutputStream fos = new FileOutputStream( file ); ftp.retrieveFile( files[ i ].getName(), fos ); fos.close(); //file.setLastModified( fileDate.getTime() ); } //} // Logout from the FTP Server and disconnect ftp.logout(); ftp.disconnect(); } }jayzman
https://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html#retrieveFile%28java.lang.String,%20java.io.OutputStream%29