org.apache.commons.net.ftp.*中的FTPClient类实现的FTP上传下载功能:

需导入Apache的commos-net的jar包,若导入的是1.4版本的包,则FTPFile[] fileList = ftpClient.listFiles()的执行过程中可能会报错,此时更换导入2.0版本的jar包,问题即可解决。

代码如下:

package com.java.ftp; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.apache.commons.net.ftp.*; public class FtpUtil { private FTPClient ftpClient = new FTPClient(); /** * 连接到FTP服务器 * * @param host * FTP地址 * @param port * 端口号 * @param username * 用户名 * @param password * 密码 */ public boolean ftpConnect(String host, int port, String username, String password) { try { ftpClient.connect(host, port); ftpClient.setControlEncoding("GBK"); int reply = ftpClient.getReplyCode(); if (FTPReply.isPositiveCompletion(reply)) { if (ftpClient.login(username, password)) { System.out.println("Successful login!"); return true; } else { System.out.println("fail to login!"); } } } catch (Exception e) { System.out.println("Failure connection!"); e.printStackTrace(); } return false; } //从本地上传单个文件,localName:本地文件路径包含文件名,ftpFile:所要放于ftp的文件夹,newName:重命名 public void ftpUpload(String localName, String ftpFile, String newName) { File srcFile = new File(localName); FileInputStream fis = null; try { fis = new FileInputStream(srcFile); //改变工作目录到所需要的路径下 ftpClient.changeWorkingDirectory(ftpFile); ftpClient.setBufferSize(1024); ftpClient.setControlEncoding("GBK"); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.storeFile(newName, fis); } catch (Exception e) { System.out.println("Failed to upload!"); e.printStackTrace(); } finally { try { fis.close(); ftpDisConnect(); } catch (IOException e) { e.printStackTrace(); } } } //从本地上传一个文件夹,localPath:本地文件夹,ftpPath:上传的资源所要存放的文件夹 public void ftpUpload2(String localPath, String ftpPath) { File uploadFile = new File(localPath); File[] fileList = uploadFile.listFiles(); FileInputStream fis = null; if (fileList == null) { return; } for (int i = 0; i < fileList.length; i++) { try { fis = new FileInputStream(fileList[i]); String ftpFileName = fileList[i].getName(); ftpClient.changeWorkingDirectory(ftpPath); ftpClient.setBufferSize(1024); ftpClient.setControlEncoding("GBK"); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.storeFile(ftpFileName, fis); } catch (Exception e) { e.printStackTrace(); } } try { fis.close(); } catch (IOException e) { e.printStackTrace(); } ftpDisConnect(); } //从FTP下载单个文件 public void ftpDownload(String ftpFile, String localName) { File outfile = new File(localName + "/" + ftpFile); OutputStream fos = null; try { fos = new FileOutputStream(outfile); ftpClient.setBufferSize(1024); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.retrieveFile(ftpFile, fos); } catch (Exception e) { System.out.println("Failed to upload!"); e.printStackTrace(); } finally { try { fos.close(); ftpClient.disconnect(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } ftpDisConnect(); } } //从FTP下载一个文件夹 public void ftpDownload2(String ftpPath, String localPath) { OutputStream fos = null; File localFile = null; try { ftpClient.changeWorkingDirectory(ftpPath); FTPFile[] fileList = ftpClient.listFiles(); for (int i = 0; i < fileList.length; i++) { String localname = fileList[i].getName(); localFile = new File(localPath + "/" + localname); fos = new FileOutputStream(localFile); ftpClient.setBufferSize(1024); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); } } catch (Exception e) { e.printStackTrace(); } try { fos.close(); } catch (IOException e) { e.printStackTrace(); } ftpDisConnect(); } public void ftpDisConnect() { try { if (ftpClient.isConnected()) { ftpClient.disconnect(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //测试 public static void main(String[] args) { FtpUtil ftp = new FtpUtil(); ftp.ftpConnect("172.20.65.30", 21, "z", "zzz"); //下载单个文件 ftp.ftpUpload("D://1.jpg", "/s", "6.jpg"); //下载文件夹 ftp.ftpUpload2("D://桌面", "/s"); //上传单个文件 ftp.ftpDownload("/s/2.jpg", "e:/"); //上传文件夹 ftp.ftpDownload2("/s","e://s"); } }

java实现的FTP上传下载客户端相关推荐

  1. ftp. java. jdk_java实现ftp上传下载(jdk1.7以下)

    java实现ftp上传下载(jdk1.7以下)完整代码,复制可用 FTP实现代码: package com.util; import java.io.File; import java.io.File ...

  2. ACTIVEX实现大文件FTP上传下载---上

    ACTIVEX实现大文件FTP上传 在Windows 操作系统下,有一个重要的机制,就是OLE ,就是可以让某个应用程序(OLE Controller)访问其它应用程序(OLE Server)所提供的 ...

  3. java ftp上传文件_jaVA使用FTP上传下载文件的问题

    为了实现 FTP上传下载,大概试了两个方法 sun.net.ftp.FtpClient org.apache.commons.net 一开始使用sun.net.ftp.FtpClient,结果发现唯一 ...

  4. 高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:宇的季节 cnblogs.com/chenkeyu/p/80 ...

  5. ftp上传下载文件详解

    首先导入包 import org.apache.commons.NET.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; FTPCli ...

  6. FTP上传下载端口号

    FTP上传下载端口号,上传下载分两种模式,主动式,被动式,主动式就是FTP服务器主动打开端口,把数据给客户端,被动式就是客服端自己从服务器的某个端口号取数据.  端口有两个,控制端口,数据传输端口,主 ...

  7. android ftp同步程序,ftp同步 安卓,安卓手机ftp上传下载文件功能同步视频照片

    手机拍照越来方便,手机里的照片也越积越多,手机运行缓慢,本文利用安卓的每步FTP服务APP来自动实现手机视频照片的同步,释放手机被占用的存储空间.在机顶盒上运行每步FTP服务,机顶盒USB口连接U盘做 ...

  8. ftp上传-下载文件通用工具类,已实测

    话不多说直接上代码 package com.springboot.demo.utils;import lombok.extern.slf4j.Slf4j; import org.apache.comm ...

  9. linux curl 命令 http请求、下载文件、ftp上传下载

    1. curl 命令简介 cURL(CommandLine Uniform Resource Locator),是一个利用 URL 语法,在命令行终端下使用的网络请求工具,支持 HTTP.HTTPS. ...

最新文章

  1. 十、Redis五大数据类型之二List
  2. c语言uint赋值给int,如何在C#中将uint转换为int?
  3. chown chmod usermod命令的使用
  4. winform中键盘和鼠标事件的捕捉和重写(转)
  5. C++_引用_引用的基本语法_注意事项_引用做函数参数---C++语言工作笔记031
  6. android_ratingbar的使用错误
  7. windows10 1909 X64位 精简优化珍藏版
  8. 数学建模论文详细分工——论文手要求篇
  9. 内网邮箱pop服务器,如何在POP3邮件服务器中创建用户邮箱
  10. 使用LSTM神经网络+CTC loss识别freetype库生成的不定长验证码
  11. 这里除了安全,什么都不会发生!Docker镜像P2P加速之路
  12. 通过SQL语句数据库简繁体转换
  13. 机器学习数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
  14. [unityshader]制作能量护盾以及简单互动
  15. 高数下|级数4|手写笔记(绝对收敛与条件收敛)
  16. ums网管应用unix系统的常用操作 (五)--iteye技术网站
  17. fcpx插件:Stupid Raisins Look Pop(30个时尚标注插件)
  18. H3C 交换机DRNI特性使用介绍
  19. Hamlet.txt下载及实现文本词频统计
  20. 百度云同步盘登录失败,报错155010的问题解决

热门文章

  1. 健康生活无需等待,松下罗密欧系列洗衣机守护你的四月天
  2. VS Code写C语言输出long double类型数据不正确的问题
  3. 数据圈最全的数据分析产品文章合集
  4. 树莓派2代B型性能极限测试
  5. css创意立体字特性
  6. 计算机管理记事本,win7旗舰版系统下自带记事本的强大功能汇总【图文详解】...
  7. 百度大脑 EasyEdge 推出端云协同服务,大幅提升本地部署模型迭代效率
  8. Redis——有时候expire比exists更好用
  9. android手机 存储路径设置在哪里找,Android 存储路径选择方法
  10. Nexus 搭建私有镜像仓库