English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Détails du code de transfert de fichiers FTP en utilisant le kit d'outils Apache en java

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.)

Vous pourriez aussi aimer