2013-06-20 145 views
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有問題嗎?還是有我沒有正確配置的東西?

回答

0

同樣的問題 - 使用SDK 1.6解決的問題,也試圖找到更好的辦法

UPD:解決(見註釋)

+0

我覺得我做了最終解決這個,這個問題基本上只是InputStream/OutputStream的默認實現非常慢。所以也許嘗試重寫更多的方法。 – bgroenks

+0

在我的情況下,問題是因爲即時通訊使用Virtualbox進行測試。 在真機上 - 一切都好。花一整天的時間) – Grey2k