Java Apache FTP客户端-恢复中断的上载

Java Apache FTP客户端-恢复中断的上载,java,ftp,upload,ftp-client,apache-commons-net,Java,Ftp,Upload,Ftp Client,Apache Commons Net,如果出现问题,我需要在FTP客户端中恢复上传ftp是Apache 因此,如果ftp.storeFile崩溃(例如,并非所有字节都已发送),我如何使用相同的InputStream继续上载? 重新连接FTP会话(如果它也断开) 测试远程文件的大小,以确定有多少字节一直传输到远程磁盘(例如,使用或size命令-请参阅) 将“输入流”搜索回该点(尽管InputStream不支持搜索,因此您必须使用不同的流实现-或重新打开InputStream并返回到该位置) 调用FTPClient.appendFile

如果出现问题,我需要在FTP客户端中恢复上传<下面示例中的code>ftp是Apache

因此,如果
ftp.storeFile
崩溃(例如,并非所有字节都已发送),我如何使用相同的
InputStream
继续上载?

  • 重新连接FTP会话(如果它也断开)
  • 测试远程文件的大小,以确定有多少字节一直传输到远程磁盘(例如,使用或
    size
    命令-请参阅)
  • 将“输入流”搜索回该点(尽管
    InputStream
    不支持搜索,因此您必须使用不同的流实现-或重新打开
    InputStream
    并返回到该位置)
  • 调用
    FTPClient.appendFile
public boolean upload(InputStream localFile, String remoteName, boolean createNew) {

    if (StringUtils.isBlank(remoteName)) {
        log.warn("Error while uploading file: localFile or remoteName is null");
        return false;
    }

    synchronized (this) {
        try {

            if (createNew) {
                return ftp.storeFile(remoteName, localFile);
            } else {
                return ftp.appendFile(remoteName, localFile); //todo is it right?
            }
        } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
            return false;
        }
    }

}