La vitesse d'Apache Commons FTPClient transfert
Je suis à l'aide d'Apache Commons FTPClient de télécharger de gros fichiers, mais la vitesse de transfert n'est qu'une fraction de la vitesse de transfert à l'aide de WinSCP via FTP. Comment puis-je accélérer mon transfert?
public boolean upload(String host, String user, String password, String directory,
String sourcePath, String filename) throws IOException{
FTPClient client = new FTPClient();
FileInputStream fis = null;
try {
client.connect(host);
client.login(user, password);
client.setControlKeepAliveTimeout(500);
logger.info("Uploading " + sourcePath);
fis = new FileInputStream(sourcePath);
//
//Store file to server
//
client.changeWorkingDirectory(directory);
client.setFileType(FTP.BINARY_FILE_TYPE);
client.storeFile(filename, fis);
client.logout();
return true;
} catch (IOException e) {
logger.error( "Error uploading " + filename, e );
throw e;
} finally {
try {
if (fis != null) {
fis.close();
}
client.disconnect();
} catch (IOException e) {
logger.error("Error!", e);
}
}
}
OriginalL'auteur Tommy Ng | 2012-07-20
Vous devez vous connecter pour publier un commentaire.
Augmenter la taille de la mémoire tampon:
J'ai eu à mettre à jour à partir de la version 3.2 à la version 3.5 et le il a travaillé, sinon encore lent. Peut-être 3.3 fonctionne bien.
OriginalL'auteur marden
utiliser le outputStream de la méthode et de transfert avec un tampon.
OriginalL'auteur Mike Jouwstra
Il est connu émis avec Java 1.7 et les Communes Net 3.2, le bug est https://issues.apache.org/jira/browse/NET-493
Si l'exécution de ces versions, je vous suggère de la mise à jour de Communes Net de 3,3 que la première étape. Apparemment 3.4 résout plus de problèmes de performances.
OriginalL'auteur KCD
Il serait mieux si vous utilisez
http://ftp.setbuffersize(0);
si vous utilisez 0 comme votre taille de tampon , il faudra que l'infini taille de la mémoire tampon.
évidemment ur transaction obtenir accéléré... personnellement, j'ai vécu..
tous les meilleurs... 🙂
OriginalL'auteur Nandakishore