Java et FTP, des cours en français.

El_Diablo666 Messages postés 294 Date d'inscription   Statut Membre Dernière intervention   -  
 Tsunamy -
Bonjour,

Java et FTP, des cours en français.

Plus exactement :

- Bibliothéque Java a utiliser.
- L'accés a un compte FTP.
- Lister avec détails les fichier et dossiers. (J'ai besion just de la tailles des fichiers)
- Se déplacer entre les repertoires.

Merci!
A voir également:

3 réponses

sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
Salut,

J'utilise une librairie appelée edtftpj. Dans la version de base, il s'agit d'un open source; une version Pro existe (pour des transferts prenant en compte les protocoles ftps et sftp), regarder ici: https://enterprisedt.com/products/edtftpj/

Pour la partie basique: licence LGPL, donc possible de l'utiliser dans des projets commerciaux/d'entreprise. Tu trouveras de la doc (et des exemples) ici: https://enterprisedt.com/products/edtftpj/ Malheureusement uniquement en anglais...

Ci dessous, voici un bout de code montrant l'utilisation de edtftpj - comme tu peux le constater, l'API est claire et intuitive et le fait d'avoir les sources (et la javadoc avec) permet même de s'affranchir de la consultation de la doc hors IDE la plupart du temps:

	private long performBackup(Daemon d) throws Exception {
		// Connect to the ftp and retrieve the information
		FTPClient ftpClient = new FTPClient();
		long fileSize = 0;
		try {
			ftpClient.setRemoteHost(props.getProperty("ftp.ip"));
			ftpClient.setRemotePort(Integer.parseInt(props.getProperty("ftp.port")));
			ftpClient.setConnectMode(FTPConnectMode.ACTIVE);
			ftpClient.connect();
			ftpClient.login(props.getProperty("ftp.user"), props.getProperty("ftp.passwd"));

			// 5 mins for the timeout
			ftpClient.setTimeout(5 * 60 * 1000);
			ftpClient.setType(FTPTransferType.BINARY);
			//Date now = new Date();
			String remoteFileName = props.getProperty("remote.file").toLowerCase();

			String localFolderStr = props.getProperty("local.folder");
			FTPFile[] dirList = ftpClient.dirDetails(".");
			for (FTPFile  file : dirList) {
				if (file.getName().toLowerCase().startsWith(remoteFileName)) {
					d.logger.debug("Ftp get of " + file.getName());
					ftpClient.get(localFolderStr + "/" + file.getName(), file.getName());
					fileSize += new File(localFolderStr + "/" + file.getName()).length();
					d.logger.debug("Ftp get okay; Ftp delete of " + file.getName());
					ftpClient.delete(file.getName());
				}
			}
			// ftpClient.get(fileStr, remoteFileName);

			// okay, file was saved - now clean a little
			File localDir = new File(props.getProperty("local.folder"));
			String[] files = localDir.list();
			List<String> filesToDelete = new ArrayList<String>();
			for (String fileName : files) {
				if (fileName.toLowerCase().startsWith(remoteFileName)
						&& new File(localFolderStr + "/" + fileName).lastModified() < (new Date().getTime() - Long.parseLong(props
								.getProperty("retention.days")) * 24 * 3600 * 1000)) {
					filesToDelete.add(localFolderStr + "/" + fileName);
				}
			}
			for (Iterator iter = filesToDelete.iterator(); iter.hasNext();) {
				String aFile = (String) iter.next();
				new File(aFile).delete();
			}
		} catch (Exception exc) {
			throw exc;
		} finally {
			try {
				ftpClient.quit();
			} catch (Exception e1) {
			}
		}

		return fileSize;
	}


hth,
+++
4
Tsunamy
 
je travaille depuis un moment avec cette API! et je rencontre le problème suivant:
j'arrive pas à me connecter au serveur le code est le suivant :


public class ConnectToServer {

public static void main(String[] args) {

// set host, username and password
String host = "ftp://MyHost.fr";
String username = "MyUserName";
String password = "MyPassword";

// set up logger so that we get some output
Logger log = Logger.getLogger(ConnectToServer.class);
Logger.setLevel(Level.INFO);

FileTransferClient ftp = null;

try {
// create client
log.info("Creating FTP client");
ftp = new FileTransferClient();

// set remote host
log.info("Setting remote host");
ftp.setRemoteHost(host);
ftp.setUserName(username);
ftp.setPassword(password);

// connect to the server
log.info("Connecting to server " + host);
ftp.connect();
log.info("Connected and logged in to server " + host);

// Shut down client
log.info("Quitting client");
ftp.disconnect();

log.info("Example complete");

} catch (Exception e) {
e.printStackTrace();
}
}
}



je reçoit un problème au niveau de l'appel : ftp.connect();
et la resultat est le suivant:

INFO [com.enterprisedt.expl.ConnectToServer] 6 oct. 2008 15:48:10.323 : Creating FTP client
INFO [com.enterprisedt.expl.ConnectToServer] 6 oct. 2008 15:48:11.591 : Setting remote host
INFO [com.enterprisedt.expl.ConnectToServer] 6 oct. 2008 15:48:11.591 : Connecting to server ftp://MyHost.fr
java.net.UnknownHostException: ftp://MyHost.123.fr
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source)
at java.net.InetAddress.getAddressFromNameService(Unknown Source)
at java.net.InetAddress.getAllByName0(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getByName(Unknown Source)
at com.enterprisedt.net.ftp.FTPClient.setRemoteHost(FTPClient.java:1299)
at com.enterprisedt.net.ftp.FileTransferClient.configureClient(FileTransferClient.java:403)
at com.enterprisedt.net.ftp.FileTransferClient.connect(FileTransferClient.java:365)
at com.enterprisedt.expl.ConnectToServer.main(ConnectToServer.java:35)
2
El_Diablo666 Messages postés 294 Date d'inscription   Statut Membre Dernière intervention   32
 
Merci, je m'y colle et je vous tiens au courant.
-4