用apache的FTP实现断点续传

springboot整合apache ftpserver详细教程(看这一篇就够了) 一、Apache ftpserver相关简介   Apache FtpServer是100%纯Java FTP服务器。它被设计为基于当前可用的开放协议的完整且可移植的FTP服务器引擎解决方案。FtpServer可以作为Windows服务或Unix / Linux守护程序独立运行,也可以嵌入Java应用程序中。我们还提供对Spring应用程序内集成的支持,并以OSGi捆绑软件的形式提供我们的发行版... 阅读详情

  apache提供的FTP功能还算强大,最近研究了一下它的断点续传功能,写下我的收获,以供大家参考。

  首先需要引入commons-net-1.4.1.jar包,该包可在http://commons.apache.org/downloads/download_net.cgi下载。

  断点续传的类ContinueFTP如下:
import java.io.*;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class ContinueFTP {

  private FTPClient ftpClient = new FTPClient();

  public ContinueFTP() {
    ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
  }

  public boolean connect(String hostname, int port, String username, String password) throws IOException {
    ftpClient.connect(hostname, port);
    if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
      if (ftpClient.login(username, password)) {
        return true;
      }
    }
    disconnect();
    return false;
  }

  public boolean download(String remote, String local) throws IOException {
    ftpClient.enterLocalPassiveMode();
    boolean result;
    File f = new File(local);
    if (f.exists()) {
      OutputStream out = new FileOutputStream(f, true);
      ftpClient.setRestartOffset(f.length());
      result = ftpClient.retrieveFile(remote, out);
      out.close();
    } else {
      OutputStream out = new FileOutputStream(f);
      result = ftpClient.retrieveFile(remote, out);
      out.close();
    }
    return result;
  }
 
  public void disconnect() throws IOException {
    if (ftpClient.isConnected()) {
     ftpClient.disconnect();
    }
  }
 
  public static void main(String[] args){
    ContinueFTP myFtp = new ContinueFTP();
    try {
      myFtp.connect("192.168.0.100", 21, "123", "123");
      myFtp.download("t.txt","G:/test.txt");
      myFtp.disconnect();
    } catch (IOException e) {
      System.out.println("连接FTP出错:"+e.getMessage());
    }
  }
}

  上面的main函数是个例子,很容易看明白:
  connect(String hostname, int port, String username, String password)中,各参数依次是主机名或IP,端口号,用户名和密码。
  download(String remote, String local)中,参数分别是远程FTP中的文件名和下载到本地中的文件全路径。

  注意上面的类中用到了PrintCommandListener.java,它是放在commons-net-1.4.1.jar源码的example下的,在commons-net-1.4.1.jar中并没有打进来,这里贴出这个类,如果需要的话和ContinueFTP.java放在一起就行了:
/*
 * Copyright 2001-2005 The Apache Software Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import java.io.PrintWriter;
import org.apache.commons.net.ProtocolCommandEvent;
import org.apache.commons.net.ProtocolCommandListener;

/***
 * This is a support class for some of the example programs.  It is
 * a sample implementation of the ProtocolCommandListener interface
 * which just prints out to a specified stream all command/reply traffic.
 * <p>
 ***/

public class PrintCommandListener implements ProtocolCommandListener
{
  private PrintWriter __writer;

  public PrintCommandListener(PrintWriter writer)
  {
    __writer = writer;
  }

  public void protocolCommandSent(ProtocolCommandEvent event)
  {
    __writer.print(event.getMessage());
    __writer.flush();
  }

  public void protocolReplyReceived(ProtocolCommandEvent event)
  {
    __writer.print(event.getMessage());
    __writer.flush();
  }
}

Apache FtpServer环境搭建详解 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文 阅读详情

相关推荐

Apache FtpServer在Windows上使用以及SpringBoot中集成apache ftpserver实现Ftp 服务端搭建

Apache FtpServer是100%纯Java FTP服务器。它被设计为基于当前可用的开放协议的完整且可移植的FTP服务器引擎解决方案。FtpServer可以作为Windows服务或Unix / Linux守护程序独立运行,也可以嵌入Java应用程序中。我们还提供对Spring应用程序内集成的支持,并以OSGi捆绑软件的形式提供我们的发行版。默认的网络支持基于高性能异步IO库Apache MINA。使用MINA,FtpServer可以扩展到大量并发用户。

BADAO_LIUMANG_QIZHI的博客 3407

自己尝试在springboot2.0微服务中内嵌一个FTP Server

屏蔽的代码是原来网上的写法。这样只能在开发工具中成功执行。我重新改写成通过获取临时文件,转换userManagerFactory需要的File。以下三个Java类主体参考了网上别人的经验,但是其中有两个BUG,我做了改写,否则应用的时候存在问题。文件内容(这里可以配置多个用户,这个是admin用户的配置。注意红色配置项是很多网上例子没有提及的)这里主要解决了两个问题。

liuxinzhi1982的专栏 2039

apache ftp 断点续传(资料及实例)

apache ftp 支持断点续传资料及实例 完整版

用apache FTP client实现FTP客户端--支持断点续传和中文文件 .

可以参考:http://blog.youkuaiyun.com/xiaozhang0731/article/details/5669151     主要使用apache中的net包来实现。网址http://commons.apache.org/net/。具体包的下载和API文档请看官网。     断点上传就是在上传的过程中设置传输的起始位置。并设置二进制传输。 Java代码  

想飞的鱼 2931

【操作系统】 Operation System 第一章:概述

B站 陈渝老师 清华大学 https://www.bilibili.com/video/av6538245?from=search&seid=436175425155932048 相关资料(源自B站下方评论区) https://www.shiyanlou.com/courses/221 配套上机实验地址 https://b23.tv/av18273642/p1 这个适合跨考和基础薄弱的 h...

iwanderu的博客 4万+

免费获取船舶轨迹数据?手把手教你用Python处理中国海洋卫星AIS数据

本文详细介绍了如何免费获取中国海洋卫星AIS数据,并使用Python进行船舶轨迹数据的处理与分析。从数据源评估到自动化处理流水线,再到高级分析与可视化技巧,手把手教你避开常见问题,实现高效数据处理。特别适合航运数据分析、物流优化和海上安全研究等领域的研究者和开发者。

weixin_42616115的博客 320

用apache FTP client实现FTP客户端--支持断点续传和中文文件

利用org.apache.commons.net.ftp包实现一个简单的ftp客户端实用类。主要实现一下功能1.支持上传下载。支持断点续传2.支持进度汇报3.支持对于中文目录及中文文件创建的支持。具体请看代码,上面有详细的注释。简化版本请参见http://zhouzaibao.javaeye.com/blog/342766枚举类UploadStatus代码 1. public enum UploadStatus { 2. Create_Directory_Fail,

2731

详解ReID的各部分组成及Trick——基于FastReID

这一系列博客将基于京东开源的FastReID进行扩充,详细介绍了ReID的各个组成部分,一些有用的Trick,评价指标,常用数据集等,详细内容见下方的链接,总结不易,如有理解不正确之处,麻烦各位批评指正。 一、FastReID的中的baseline文件配置 二、Training strategy 三、Pre-processing 四、Backbone 五、Aggregation 六、Head 七、Loss 八、Distance Metric 九、Post-processing 十、Evaluation 十一

藏晖的博客 9165

org.apache.commons.net.ftp包开发FTP客户端,实现断点续传,中文支持

利用org.apache.commons.net.ftp包实现一个简单的ftp客户端实用类。主要实现一下功能 1.支持上传下载。支持断点续传 2.支持进度汇报 3.支持对于中文目录及中文文件创建的支持。 具体请看代码,上面有详细的注释。简化版本请参见http://zhouzaibao.iteye.com/blog/342766 枚举类UploadStatus代码 Java代...

wumaodan的专栏 194

边云协同智能进化:大模型与小模型的动态训练与高效部署策略

本文深入探讨了边云协同架构下大模型与小模型的动态训练与高效部署策略。通过物流分拣、医疗影像等实战案例,展示了如何利用边云协作框架实现AI模型的智能进化,显著提升处理效率与准确性。重点解析了动态任务分配、增量学习和知识蒸馏等关键技术,为分布式训练场景提供优化方案。

work3的博客 191

ubuntu安装FSL

1.下载fslinstaller.py 官网下载地址:https://fsl.fmrib.ox.ac.uk/fsldownloads_registration 或者去我的百度网盘取: 链接:https://pan.baidu.com/s/1d5eHm48oamFdYdKm84nifw 提取码:6ff9 2.将base环境改成python2.0版本 本来想在服务器安装,服务器没有sudo权限,网上很多教程都装不了,于是就自己安装虚拟机再装了一个ubuntu,然后安装了python2环境,再开始装fsl,fsl

qq_36421001的博客 4098

使用org.apache.commons.net.ftp包开发FTP客户端,实现进度汇报,实现断点续传,中文支持

使用org.apache.commons.net.ftp包开发FTP客户端,实现进度汇报,实现断点续传,中文支持 利用org.apache.commons.net.ftp包实现一个简单的ftp客户端实用类。主要实现一下功能 1.支持上传下载。支持断点续传 2.支持进度汇报 3.支持对于中文目录及中文文件创建的支持。   import java.io.File; import

想飞的鱼 1691

IDEA类和方法注释模板设置(非常详细)

IDEA类和方法注释模板设置(非常详细)

黑桃A的博客 10万+

使用org.apache.commons.net.ftp包开发FTP客户端,实现进度汇报,实现断点续传,中文支持...

使用org.apache.commons.net.ftp包开发FTP客户端,实现进度汇报,实现断点续传,中文支持 利用org.apache.commons.net.ftp包实现一个简单的ftp客户端实用类。主要实现一下功能 1.支持上传下载。支持断点续传 2.支持进度汇报 3.支持对于中文目录及中文文件创建的支持。   import java.io.FileOutputStre...

yihaoxue的博客 309

ApolloScape 数据集:YOLOv10 + UI界面实现与应用

是由百度Apollo团队发布的一个大规模自动驾驶数据集,涵盖了车辆、行人、骑行者等多种交通元素,旨在为自动驾驶技术的发展提供丰富的数据支持。数据集包含多种复杂的场景,例如城市道路、交叉口、车辆聚集等,能够帮助研究人员和开发者在多种现实环境下测试和验证目标检测模型。YOLO(You Only Look Once)系列算法是目前最流行的目标检测算法之一,因其高效、准确以及实时性强的特点被广泛应用于计算机视觉领域。YOLOv10是YOLO系列中的最新版本,在性能和效率上进行了多方面的优化。速度快。

YOLO 931

RK35X8调试YT8531单网口千兆以太网PHY芯片,修复ping不通或者IP地址丢失的问题

RK35X8上调试YT8531以太网PHY

荻夜的博客 3976

用apache FTP client实现FTP客户端--支持断点续传和中文文件(转)

利用org.apache.commons.net.ftp包实现一个简单的ftp客户端实用类。主要实现一下功能 1.支持上传下载。支持断点续传 2.支持进度汇报 3.支持对于中文目录及中文文件创建的支持。 具体请看代码,上面有详细的注释。简化版本请参见http://zhouzaibao.iteye.com/blog/342766   枚举类UploadStatus代码 public e...

iushnauh的专栏 192

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

使用org.apache.commons.net.ftp包开发FTP客户端,实现进度汇报,实现断点续传,中文支持 ...

利用org.apache.commons.net.ftp包实现一个简单的ftp客户端实用类。主要实现一下功能1.支持上传下载。支持断点续传2.支持进度汇报3.支持对于中文目录及中文文件创建的支持。 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import...

子夜轻风 172

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: 开始-运行-命令
下一篇: log4j输出多个自定义日志文件
janestone
博客等级 码龄23年 20粉丝 9原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值