Progress Bar avec org.apache.commons.net.ftp
Bonjour,
Mon projet en ce moment est de faire un programme qui envoie des fichiers sur un serveur ftp. Donc il fonctionne avec la librairie commons net d'apache, mais j'aimerai le faire un peu plus évoluer. C'est à dire faire une fonction pour voir la progression de l'envoi et pourquoi pas la vitesse également.
J'envoie fichier par fichier, donc une connexion = 1 upload.
J'ai pas mal fouiller sur le net, et je vois la fonction dans la doc de commons :
public OutputStream storeUniqueFileStream(String remote) throws IOException
Est ce que cette méthode peut me servir pour faire une progressbar ?
Vu qu'il retourne, ce qui a été envoyé ?
il faut faire une comparaison de taille sur le fichier en envois et et le flux envoyé ??
Voilà mon code qui permet d'envoyer un fichier
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
| package Moteur;
import java.io.*;
import java.net.SocketException;
//import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.ftp.*;
public class Ftp extends FTPClient
{
public Ftp()
{
}
public boolean Upload(String server, String username, String password, String remote, String local) throws IOException
{
boolean error = false;
//this.addProtocolCommandListener(new PrintCommandListener( new PrintWriter(System.out))); //Active les écoutes des commandes FTP
try
{
this.connect(server);
//System.out.println("Connected to " + server + ".");
int reply = this.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply))
{
this.disconnect();
System.err.println("Connexion refusée.");
}
}
catch (IOException e)
{
if (this.isConnected())
{
try
{
this.disconnect();
}
catch (IOException f)
{
// do nothing
}
}
System.err.println("Impossible de joindre le serveur.");
//e.printStackTrace();
}
try
{
if (!this.login(username, password))
{
this.logout();
error = true;
System.out.println("Login ou mot de passe non valide");
}
//System.out.println("Remote system is " + this.getSystemName());
this.setFileType(FTP.BINARY_FILE_TYPE);
this.enterLocalPassiveMode();
InputStream input;
input = new FileInputStream(local);
this.storeFile(remote, input);
input.close();
this.logout();
}
catch (FTPConnectionClosedException e)
{
error = true;
System.err.println("Server closed connection.");
//e.printStackTrace();
}
catch (IOException e)
{
error = true;
//e.printStackTrace();
}
finally
{
if (this.isConnected())
{
try
{
this.disconnect();
}
catch (IOException f){}
}
}
return error;
}
public boolean TestConnexion(String server) throws SocketException, IOException //Test si le serveur est joignable
{
boolean error = false;
this.connect(server);
int reply = this.getReplyCode();
if (FTPReply.isPositiveCompletion(reply))
{
this.disconnect();
System.err.println("Connexion refusée.");
}
return error;
}
} |
Dites moi rapidement si je suis aux fraises et comment je peux arriver à faire ce que je veux.
Merci ;)