Was ist die maximale Download-Geschwindigkeit mit 1 Thread von Apaches FTPClient?FTPClient Java Beschleunigung herunterladen
Ich kann nicht mehr, als etwa 6 MB/s mit einem FPTSClient Verbindung (AUTH SSL). Wenn ich über ein FTP-Tool wie FTP Rush im Zusammenhang mit 150mb/s und mehr verbinden!
1.000,0 Byte (s) in 6,97 (150,376.60 Kbps)
Ich versuche, habe bereits die ftpBufferSize zwischen 1024 * 1024 und 1024 * 1024 * 10, aber nichts geändert zu erhöhen.
Dies ist nur ein kleiner Ausschnitt, wo ich auf dem FTP-Verbindung:
ftp.setConnectTimeout(8000);
ftp.setDefaultPort(this.port);
try {
ftp.connect(this.host);
} catch (Exception e) {
LogController.logMessage("Connect::tryConnect -> Exception: "+e.getMessage());
LogController.logMessage(e);
}
if(ftp.isConnected()) {
if(this.ssl) {
((FTPSClient) ftp).execPBSZ(0);
}
LogController.logMessage("Connect::tryConnect -> Open new connection.");
if(!ftp.login(this.username, this.password)) {
LogController.logMessage("Connect::tryConnect -> "+getReplyString());
ftp.logout();
} else {
LogController.logMessage("Connect::tryConnect -> User login correct.");
if(this.ssl) {
((FTPSClient) ftp).execPROT("P");
LogController.logMessage("Connect::tryConnect -> "+getReplyString());
}
if(ftp.getSystemType().toLowerCase().contains("win") == false)
ftp.configure(new FTPClientConfig(FTPClientConfig.SYST_UNIX));
int reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
LogController.logMessage(getReplyString());
} else {
ftp.enterLocalPassiveMode();
ftp.setBufferSize(10485760);
ftp.setRemoteVerificationEnabled(false);
ftp.setListHiddenFiles(true);
Und hier ist der letzte Download-Schnipsel:
if (download) {
OutputStream output;
output = new FileOutputStream(tmpPath);
if(!ftp.setFileType(FTP.BINARY_FILE_TYPE))
LogController.logMessage("Connect::downloadFiles -> Could'nt set binary file type.");
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
Date d = new Date();
String date = dateFormat.format(d);
LogController.logMessage("Connect::downloadFiles -> Start downloading "+file+", "+date+", Buffersize: "+ftp.getBufferSize());
if(!ftp.retrieveFile(ftpFilePath, output)) {
LogController.logMessage("Connect::downloadFiles -> Could'nt download the file: "+file);
output.close();
return false;
} else {
output.close();
d = new Date();
date = dateFormat.format(d);
LogController.logMessage("Connect::downloadFiles -> Download finished. "+date);
return true;
}
}
ich große Dateien über 100 MB übertragen müssen. Gibt es eine Möglichkeit, den Download zu beschleunigen? Vielen Dank im Voraus, Grüße.
Versuchen Sie, eine 'BufferedOutputStream' statt der Schnittstelle zu verwenden' OutputStream' –
Wenn ich die Zeile 'Output Ausgabe ändern,' auf 'BufferedOutputStream Ausgang = new BufferedOutputStream (neuer Fileoutputstream (tmppath));' i 8sec noch für ein brauchen 48 MB Datei. Das sind also fast 6 MB/s. Es gibt keine Veränderung, Grüße. – pnk