上传
下载(被动模式)
api调用
ByteArrayOutputStream result = new ByteArrayOutputStream();
String localFileName = new String(fileName.getBytes(“GBK”), StandardCharsets.ISO_8859_1);
ftpClient.retrieveFile(localFileName, result);
- 参数意义:commd :指令根据调用不同的方法有不同的指令,指令由api生成我们不需要设计,remoteq请求的文件名,local获得的文件流
- 建立socket,并通过指令请求ftp服务器(不是我们的程序,是指运行在我们服务端上的ftp服务,由它们发送数据)
- 获取文件流、两种文件格式,决定是不是要转化ascii与二进制数
- 复制流输入转输出流
- 关闭连接流等
- 获取状态(是否成功)
总结:下载的过程除去ftp服务端往里写的过程我们不知道以外,等到我们拿到数据流的时候实际上跟BIO是一样的
总结
交互是由运行在本地的ftp服务与远程的ftp服务器交互经行的,过程对程序员透明,重传、确认等机制由ftp服务程序完成,我们得到的是下载完成后的一个输入流(文件的流,无结构数据,跟之前的BIO传文件一样)单通道,请求多个程序无法建立多个通道