java 实现ftp断点传输

目录

  1. 需求背景
  2. 原理介绍
  3. 代码实现

1、需求背景

上送交易订单每日达600万,高峰期将近上千万,压缩包高达500M,如果网络上传超时,或者网络出现波动,需要实现断点继续上送功能。

2 原理介绍

那么字面意思,我们已经理解了,实际上ftp断点传输是怎么实现的呢?

实现起来也很简单,每次传输前,先检查下远程文件是否已经存在,如果存在了,那么我们就读取这个文件的大小。然后比较下带传输文件和现在的文件的大小。如果没有现在的文件大,那么可以认为之前上传的文件是完成的,本次不需要上传,但是,现在的文件要是比待上传的文件小的话,就需要重新或者继续上传了。选择继续上传的话,就是断点传输了。

3 代码实现

那么怎么实现这次上传接着上次上传呢?我们都知道,文件操作是有一个文件指针的,每次操作的时候,指针都会移动。因此,如果想实现继续接着上次上传文件,只需要将待上传的文件指针移动一个已经上传的文件的大小即可。明白了原理,代码也就好写了。

import java.io.File;  
 import java.io.FileInputStream;  
 import java.io.FileOutputStream;  
 import java.io.IOException;  
 import java.io.InputStream;  
 import java.io.OutputStream;  
 import java.io.PrintWriter;  
 import org.apache.commons.net.PrintCommandListener;  
 import org.apache.commons.net.ftp.FTP;  
 import org.apache.commons.net.ftp.FTPClient;  
 import org.apache.commons.net.ftp.FTPFile;  
 import org.apache.commons.net.ftp.FTPReply;  
   
 public class ContinueFTP {  
     private FTPClient ftpClient = new FTPClient();  
       
     public ContinueFTP(){  
         //设置将过程中使用到的命令输出到控制台  
         this.ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));  
     }  
       
     /** 
      * java编程中用于连接到FTP服务器    此api最好加一个链接的超时时间
      * @param hostname 主机名 
      * @param port 端口 
      * &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值