Cet article présente principalement comment utiliser l'outil FTP fourni par Apache Toolset Commons-Net pour télécharger et télécharger des fichiers sur le serveur FTP.
1. Préparation
Besoin de référencer le package Commons-net-3.5.jar.
Importation à l'aide de maven:
<dependency> <proupId> Commons-net </rom grouped> <ArtefactId> Commons-net </retifactid> <version> 3.5 </ version> </Dependency>
Téléchargement manuel:
//www.vevb.com/softs/550085.html
2. Connectez-vous au serveur FTP
/ ** * Connectez-vous au serveur FTP * @throws ioException * / public static final String anonymous_user = "anonymous"; private ftpclient connect () {ftpclient client = new ftpclient (); try {// connect ftp serverClient.connect (this.host, this.port); // connex if (this.user == null || "". equals (this.user)) {// se connecter dans client.login (anonymous_user, anonymous_user);} else {client.login (this.user, this.password);} // définir le format de fichier client.SetfleType (ftpclient.binary_file_type); int réponse = client.getReplyCode (); if (! ftpreply.ispositivecompletion (réponse)) {client.disconnect (); return null;} // change le répertoire de travail changeworkingdirectory null;} return client;} / ** * changez le répertoire de travail. Lorsque le répertoire distant n'existe pas, créez le répertoire * @param client * @throws ioException * / private void ChangeWorkingDirectory (FTPClient client) lance ioException {if (this.ftppath! = Null &&! "". client.changeworkingDirectory (this.ftppath); if (! ok) {// ftppath n'existe pas, créez le répertoire manuellement stringtokenizer token = new StringTokenizer (this.ftppath, "////"); while (token.hasmoretokens ()) {string path = token.nextToken (); client.makedirectory (path); client.changeworkingDirectory (path);}}}} / ** * Débranchez la connexion FTP * @param ftpclient * @throws ioException * / public Void Close (FTPCLIENT ftpclient) Throws ioException If; ftpClient.isconnected ()) {ftpclient.logout (); ftpclient.disconnect ();} System.out.println ("!!! Disconnectftpt Connection:" + host + ":" + port);} Hôte: adresse IP du serveur FTP
Port: port de serveur FTP
Utilisateur: Connexion Utilisateur
Mot de passe: Lorsque le mot de passe de connexion est vide, utilisez un utilisateur anonyme pour vous connecter.
FTPPATH: chemin FTP, créé automatiquement lorsque le chemin FTP n'existe pas. S'il s'agit d'une structure de répertoire multicouche, il est nécessaire de créer le répertoire de manière itérative.
3. Télécharger des fichiers
/ ** * Fichier de téléchargement * @param TargetName Téléchargez sur FTP Nom du fichier * @Param LocalFile Local File Path * @return * / public boolean upload (String TargetName, String localfile) {// connect ftp serverftpclient ftpclient = connect (); if (ftpclient == null) {System.out.Println ("Connect to FTP) Server ["+ host +": "+ port +"] a échoué! "); return false;} fichier file = new file (localfile); // définir le nom de fichier après upload if (cibleName == null ||" ". FileInputStream (fichier); System.out.println (">>> Démarrage de démarrage Fichier:" + file.getName ()); boolean ok = ftpclient.storefile (TargetName, fis); if (ok) {// upload Longly Times = System.currenttimemillis () - maintenant: System.out.println (string.format (">> % s, temps de téléchargement:% d secondes ", formatSize (file.length ()), Times / 1000));} else // téléchargement échoué System.out.println (string.format (" >>> téléchargement échoué: taille:% s ", formatsize (file.length ())));} catch (ioexception e) {System.err.rr.randpring % s ", formatSize (file.length ()))); e.printStackTrace (); return false;} enfin {try {if (fis! = null) fis.close (); close (ftpclient);} catch (exception e) {}} return true;};4. Téléchargez le fichier
/ ** * Télécharger le fichier * @param localPath Local Storage Path * @return * / public int download (String localPath) {// connecter à ftp serverftpclient ftpclient = connect (); if (ftpclient == null) {System.out.println ("Connexion à ftp server [" + hôte + ":" + port + "] a échoué! Fichier (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; i = 0; i <ftpfiles.length; i ++) {fileOutputStream fos = null; try {String name = ftpfiles [i] .getName (); fos = new FileOutputStream (new File.getabsolupath () + file.separator + name)); system.out.println ("<<<< << start downlowing file:" + name); Long Now = System.CurrentTimeMillis (); boolean ok = ftpclient.retReveFile (new String (name.getBytes ("utf-8"), "iso-8859-1"), fos); if (ok) {// télécharger avec succès Long Times = System.currentTimeMillis () - maintenant: System.out.PrintLn (String.Formation. % s, Téléchargez le temps:% d secondes ", formatSize (ftpFiles [i] .getSize ()), Times / 1000)); c ++;} else {System.out.println (" <<< télécharger échoué ");}} Catch (ioException e) {System.err.println (" <<< Télécharger l'échec "); E.PrintStackTrace ();} Enfin {try {if (fos! = null) fos.close (); close (ftpclient);} catch (exception e) {}}} return c;}Taille de fichier de format
Décimalformat final statique privé df = new decimalformat ("#. ##"); / ** * Format Taille du fichier (b, kb, mb, gb) * @param size * @return * / private String FormatSize (longue taille) {if (size <1024) {return size + "b"; } else if (size <1024 * 1024) {return size / 1024 + "kb"; } else if (size <1024 * 1024 * 1024) {return (size / (1024 * 1024)) + "MB"; } else {double gb = size / (1024 * 1024 * 1024); return df.format (gb) + "gb"; }}V.
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
=== Connectez-vous à FTP: 192.168.1.10:21>>>> START Fichier de téléchargement: TeamViewerportable.rar >>> Téléchargé avec succès: taille: 5 Mo, temps de téléchargement: 3 secondes !!! Déconnecté FTP Connexion newfile.rar <<< découvert avec succès: Taille: 5 Mo, heure de téléchargement: 4 secondes !!! Connexion FTP déconnectée: 192.168.1.10:21
Résumer
Ce qui précède est toute l'explication détaillée de l'utilisation de Java Use of Apache Toolst pour implémenter le code de transfert de fichiers FTP, j'espère que cela sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!