1
我使用Apache Commons Net 3.3來處理Java應用程序中的FTP傳輸。Apache Commons Net緩慢FTP上傳
下載似乎工作正常,但我得到的速度比上傳本地互聯網連接功能慢很多。
文件數據寫入流的代碼如下所示:
BufferedOutputStream out = new BufferedOutputStream(ftp.getOutputStream(prt));
BufferedInputStream in = new BufferedInputStream(prov.getInputStream(s));
byte[] buff = new byte[BUFF_SIZE];
int len;
while ((len = in.read(buff)) >= 0 && !prog.isCanceled()) {
out.write(buff, 0, len);
total += len;
prog.setProgress((int) (Math.round((total/combo) * 100)));
}
in.close();
out.close();
BUFF_SIZE = 16kB的
我已在FTPClient緩衝區的大小也設置爲16kB的通過setBufferSize
問題不在服務器或我的互聯網連接,因爲上傳使用Filezilla作爲FTP客戶端以更合理的速度進行。
這個問題似乎也發生在Java 6和7 JVM上。
有沒有人有任何想法,爲什麼發生這種情況? Commons Net或Java有問題嗎?還是有我沒有正確配置的東西?
我覺得我做了最終解決這個,這個問題基本上只是InputStream/OutputStream的默認實現非常慢。所以也許嘗試重寫更多的方法。 – bgroenks
在我的情況下,問題是因爲即時通訊使用Virtualbox進行測試。 在真機上 - 一切都好。花一整天的時間) – Grey2k