2014-10-17 133 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