English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Cet article présente principalement comment utiliser l'ensemble d'outils Apache commons-L'outil ftp fourni par net permet de télécharger et de télécharger des fichiers sur le serveur ftp.
Première partie : Préparation
Besoin de se référer à commons-net-3.5.jar package.
Importer avec Maven :
<dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.5</version> </dependency>
Téléchargement manuel :
https://fr.oldtoolbag.com/softs/550085.html
Deuxième partie : Se connecter au serveur FTP
/** * Se connecter au serveur FTP * @throws IOException */ public static final String ANONYMOUS_USER="anonymous"; private FTPClient connect(){ FTPClient client = new FTPClient(); try{ //Se connecter au serveur FTP client.connect(this.host, this.port); //Se connecter if(this.user==null||"".equals(this.user)){ //Se connecter de manière anonyme client.login(ANONYMOUS_USER, ANONYMOUS_USER); } else{ client.login(this.user, this.password); } //Configurer le format de fichier client.setFileType(FTPClient.BINARY_FILE_TYPE); //Obtenir la réponse du serveur FTP int reply = client.getReplyCode(); if(!FTPReply.isPositiveCompletion(reply)){ client.disconnect(); return null; } //Changer le répertoire de travail changeWorkingDirectory(client); System.out.println("=== Connexion à FTP : ")+host+:"+port); } catch(IOException e){ return null; } return client; } /** * Changer le répertoire de travail, créer le répertoire à distance s'il n'existe pas * @param client * @throws IOException */ private void changeWorkingDirectory(FTPClient client) throws IOException{ if(this.ftpPath!=null&&!"".equals(this.ftpPath)){ Boolean ok = client.changeWorkingDirectory(this.ftpPath); if(!ok){ //ftpPath n'existe pas, créez manuellement le répertoire StringTokenizer token = new StringTokenizer(this.ftpPath,"\\",//"); while(token.hasMoreTokens()){ String path = token.nextToken(); client.makeDirectory(path); client.changeWorkingDirectory(path); } } } } /** * Déconnecter la connexion FTP * @param ftpClient * @throws IOException */ public void close(FTPClient ftpClient) throws IOException{ if(ftpClient!=null && ftpClient.isConnected()){ ftpClient.logout(); ftpClient.disconnect(); } System.out.println("!!! Déconnexion de la connexion FTP : ")+host+:"+port); }
host : Adresse IP du serveur FTP
port : Port du serveur FTP
user : Utilisateur de connexion
password : Mot de passe de connexion
Si l'utilisateur de connexion est vide, utilisez l'utilisateur anonyme pour se connecter.
ftpPath : Chemin FTP, si le chemin FTP n'existe pas, il est créé automatiquement. Si c'est une structure de répertoires en plusieurs niveaux, il est nécessaire de créer les répertoires itérativement.
Troisième partie : Télécharger un fichier
/** * Télécharger un fichier * @param targetName Nom du fichier FTP à télécharger * @param localFile Chemin du fichier local * @return */ public Boolean upload(String targetName,String localFile){ //Connection au serveur FTP FTPClient ftpClient = connect(); if(ftpClient==null){ System.out.println("Connection à l'FTP server ["+host+:"+port+"]Echec !"); return false; } File file = new File(localFile); //Définir le nom du fichier téléversé après téléversement if(targetName==null||"".equals(targetName)) targetName = file.getName(); FileInputStream fis = null; try{ long now = System.currentTimeMillis(); //Début du téléversement de fichier fis = new FileInputStream(file); System.out.println(">>>Début du téléversement de fichier :"+); Boolean ok = ftpClient.storeFile(targetName, fis); if(ok){ //Succès du téléversement long times = System.currentTimeMillis(); - now; System.out.println(String.format(">>>Succès du téléversement : taille:%s, temps de téléversement:%d secondes", formatSize(file.length()), times/1000)); } else//Échec du téléversement System.out.println(String.format(">>>Échec du téléversement : taille:%s", formatSize(file.length()))); } catch(IOException e){ System.err.println(String.format(">>>Échec du téléversement : taille:%s", formatSize(file.length()))); e.printStackTrace(); return false; } finally{ try{ if(fis!=null) fis.close(); fermer(ftpClient); } catch(Exception e){ } } return true; }
Quatre, téléchargement de fichiers
/** * Téléchargement de fichiers * @param localPath Chemin de stockage local * @return */ public int download(String localPath){ // Connection au serveur FTP FTPClient ftpClient = connect(); if(ftpClient==null){ System.out.println("Connection à l'FTP server ["+host+:"+port+"]Echec !"); return 0; } File dir = new File(localPath); if(!dir.exists()) dir.mkdirs(); FTPFile[] ftpFiles = null; try{ ftpFiles = ftpClient.listFiles(); if(ftpFiles==null||ftpFiles.length==0) return 0; } catch(IOException e){ return 0; } int c = 0; for (int i=0;i<ftpFiles.length;i++{ FileOutputStream fos = null; try{ String name = ftpFiles[i].getName(); fos = new FileOutputStream(new File(dir.getAbsolutePath()+File.separator+name)); System.out.println("<<<Début du téléchargement du fichier :"+name); long now = System.currentTimeMillis(); Boolean ok = ftpClient.retrieveFile(new String(name.getBytes("UTF");-8"),"ISO-8859-1"), fos); if(ok){ //Téléchargement réussi long times = System.currentTimeMillis(); - now; System.out.println(String.format("<<<Téléchargement réussi : taille:%s, heure de téléversement:%d secondes", formatSize(ftpFiles[i].getSize()), times/1000)); c++; } else{ System.out.println("<<<Echec du téléchargement"); } } catch(IOException e){ System.err.println("<<<Echec du téléchargement"); e.printStackTrace(); } finally{ try{ if(fos!=null) fos.close(); fermer(ftpClient); } catch(Exception e){ } } } return c; }
formater la taille du fichier
private static final DecimalFormat DF = new DecimalFormat("#.##"); /** * formater la taille du fichier (B, KB, MB, GB) * @param size * @return */ private String formatSize(long size){ " B";1024{ " KB"; + return size }1024*1024{ " KB";/1024 + else if(size< }1024*1024*1024{ return (size/(1024*1024)) + " MB"; }else{ double gb = size/(1024*1024*1024); return DF.format(gb)+" GB"; } }
Cinquième, test
public static void main(String args[]){ FTPTest ftp = new FTPTest("192.168.1.10",21,null,null,"/temp/2016/12"); ftp.upload("newFile.rar", "D:",/ftp/TeamViewerPortable.rar"); System.out.println(""); ftp.download("D:",/ftp/"); }
Résultat
=== Connexion à FTP :192.168.1.10:21 >>> Début du téléversement du fichier : TeamViewerPortable.rar >>> Téléversement réussi : taille :5 MB, temps de téléversement :3seconde !!! Déconnexion de la connexion FTP :192.168.1.10:21 === Connexion à FTP :192.168.1.10:21 <<< Début du téléchargement du fichier : newFile.rar <<< Téléchargement réussi : taille :5 MB, temps de téléversement :4seconde !!! Déconnexion de la connexion FTP :192.168.1.10:21
Résumé
Voici le contenu complet de la déduction de ce tutoriel sur la mise en œuvre de la transmission de fichiers FTP en utilisant l'ensemble d'outils Apache en Java, j'espère que cela aidera à beaucoup de gens. Les amis intéressés peuvent continuer à consulter d'autres sujets pertinents sur ce site, et sont invités à laisser des commentaires si quelque chose manque. Merci de votre soutien à ce site !
Déclaration : Le contenu de cet article est issu du réseau, propriété des auteurs respectifs, contribué et téléversé par les utilisateurs d'Internet, ce site ne détient pas de droits de propriété, n'a pas été traité par l'éditeur humain et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu suspect de violation de droits d'auteur, vous êtes invités à envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.)