2014-10-17 134 views
1

我有問題,我需要通過FTP傳輸大量文件從服務器到客戶端,這需要很多時間。我們目前使用apache.commons.net庫中的FTPClient。Apache FTP客戶端在傳輸時是否壓縮文件?

所以問題是 - FTPClient在傳輸時是否壓縮文件?或者有什麼方法可以加快轉移?

任何指針或相關信息將會很有幫助!

回答

2

是的,這就是所謂的模式Z(或壓縮傳輸模式)。

FTPClient ftpClient = new FTPClient(); 
ftpClient.connect(server.getServer()); 
ftpClient.login(server.getUsername(), server.getPassword()); 
ftpClient.setFileType(FTP.BINARY_FILE_TYPE); 
ftpClient.setFileTransferMode(FTP.COMPRESSED_TRANSFER_MODE); 

你也可以顯然壓縮服務器端的文件,然後通過標準的FTP發送它們(它應該在最後是相同的)。

+0

謝謝!還有一個跟進問題 - 什麼是壓縮比?它可能有多快?你可以提供任何鏈接來參考這個。 – EngineeredBrain 2014-10-17 08:53:42

+0

不確定使用FTPClient的壓縮比率。如果你想對文件壓縮本身有更多的控制權,我想你應該在服務器端壓縮它們(有很多java庫在做,比如https://code.google.com/p/lz4/ ),然後通過FTP上傳它們 – 2014-10-17 11:11:08

+1

@AnwarShaikh:算法是deflate,它也用於gzip,並且也用於HTTP中的內容編碼。壓縮比率當然取決於內容,但對於文本(如列表),可以是2:1..5:1,對於已壓縮的數據(如PNG圖像)可能不會。 – 2014-10-17 20:45:48