1:jar的maven的引用:

  1. 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. 3
  4. 4 <!-- jar包依赖 -->
  5. 5 <dependencies>
  6. 6
  7. 7 <!-- Apache工具组件 -->
  8. 8 <dependency>
  9. 9 <groupId>commons-net</groupId>
  10. 10 <artifactId>commons-net</artifactId>
  11. 11 </dependency>
  12. 12
  13. 13 </dependencies>
  14. 14
  15. 15
  16. 16 </project>
 
 
 
 
2:javaCode:
  1. package com.taotao.common.utils;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.OutputStream;
  10.  
  11. import org.apache.commons.net.ftp.FTP;
  12. import org.apache.commons.net.ftp.FTPClient;
  13. import org.apache.commons.net.ftp.FTPFile;
  14. import org.apache.commons.net.ftp.FTPReply;
  15.  
  16. /**
  17. *
  18. * @ClassName: FtpUtil
  19. * @Description: ftp上传下载工具类
  1. * 来源:传智播客
  2. * @author: 刘军/shall_liu(1136808529@qq.com)
  3. * @date: 2017826 下午1:22:06
  4. *
  5. * @Copyright: 2017
  6. */
  7. public class FtpUtil {
  8.  
  9. /**
  10. * Description: 向FTP服务器上传文件
  11. * @param host FTP服务器hostname
  12. * @param port FTP服务器端口
  13. * @param username FTP登录账号
  14. * @param password FTP登录密码
  15. * @param basePath FTP服务器基础目录
  16. * @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath
  17. * @param filename 上传到FTP服务器上的文件名
  18. * @param input 输入流
  19. * @return 成功返回true,否则返回false
  20. */
  21. public static boolean uploadFile(String host, int port, String username, String password, String basePath,
  22. String filePath, String filename, InputStream input) {
  23. boolean result = false;
  24. FTPClient ftp = new FTPClient();
  25. try {
  26. int reply;
  27. ftp.connect(host, port);// 连接FTP服务器
  28. // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
  29. ftp.login(username, password);// 登录
  30. reply = ftp.getReplyCode();
  31. if (!FTPReply.isPositiveCompletion(reply)) {
  32. ftp.disconnect();
  33. return result;
  34. }
  35. //切换到上传目录
  36. if (!ftp.changeWorkingDirectory(basePath+filePath)) {
  37. //如果目录不存在创建目录
  38. String[] dirs = filePath.split("/");
  39. String tempPath = basePath;
  40. for (String dir : dirs) {
  41. if (null == dir || "".equals(dir)) continue;
  42. tempPath += "/" + dir;
  43. if (!ftp.changeWorkingDirectory(tempPath)) {
  44. if (!ftp.makeDirectory(tempPath)) {
  45. return result;
  46. } else {
  47. ftp.changeWorkingDirectory(tempPath);
  48. }
  49. }
  50. }
  51. }
  52. //设置上传文件的类型为二进制类型
  53. ftp.setFileType(FTP.BINARY_FILE_TYPE);
  54. //上传文件
  55. if (!ftp.storeFile(filename, input)) {
  56. return result;
  57. }
  58. input.close();
  59. ftp.logout();
  60. result = true;
  61. } catch (IOException e) {
  62. e.printStackTrace();
  63. } finally {
  64. if (ftp.isConnected()) {
  65. try {
  66. ftp.disconnect();
  67. } catch (IOException ioe) {
  68. }
  69. }
  70. }
  71. return result;
  72. }
  73.  
  74. /**
  75. * Description: 从FTP服务器下载文件
  76. * @param host FTP服务器hostname
  77. * @param port FTP服务器端口
  78. * @param username FTP登录账号
  79. * @param password FTP登录密码
  80. * @param remotePath FTP服务器上的相对路径
  81. * @param fileName 要下载的文件名
  82. * @param localPath 下载后保存到本地的路径
  83. * @return
  84. */
  85. public static boolean downloadFile(String host, int port, String username, String password, String remotePath,
  86. String fileName, String localPath) {
  87. boolean result = false;
  88. FTPClient ftp = new FTPClient();
  89. try {
  90. int reply;
  91. ftp.connect(host, port);
  92. // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
  93. ftp.login(username, password);// 登录
  94. reply = ftp.getReplyCode();
  95. if (!FTPReply.isPositiveCompletion(reply)) {
  96. ftp.disconnect();
  97. return result;
  98. }
  99. ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
  100. FTPFile[] fs = ftp.listFiles();
  101. for (FTPFile ff : fs) {
  102. if (ff.getName().equals(fileName)) {
  103. File localFile = new File(localPath + "/" + ff.getName());
  104.  
  105. OutputStream is = new FileOutputStream(localFile);
  106. ftp.retrieveFile(ff.getName(), is);
  107. is.close();
  108. }
  109. }
  110.  
  111. ftp.logout();
  112. result = true;
  113. } catch (IOException e) {
  114. e.printStackTrace();
  115. } finally {
  116. if (ftp.isConnected()) {
  117. try {
  118. ftp.disconnect();
  119. } catch (IOException ioe) {
  120. }
  121. }
  122. }
  123. return result;
  124. }
  125.  
  126. public static void main(String[] args) {
  127. try {
  128. FileInputStream in=new FileInputStream(new File("D:\\temp\\image\\gaigeming.jpg"));
  129. boolean flag = uploadFile("192.168.25.133", 21, "ftpuser", "ftpuser", "/home/ftpuser/www/images","/2015/01/21", "gaigeming.jpg", in);
  130. System.out.println(flag);
  131. } catch (FileNotFoundException e) {
  132. e.printStackTrace();
  133. }
  134. }
  135. }
  136.  

Java.ftp上传下载的更多相关文章

  1. java FTP 上传下载删除文件

    在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件 ...

  2. JAVA 实现FTP上传下载(sun.net.ftp.FtpClient)

    package com.why.ftp; import java.io.DataInputStream; import java.io.File; import java.io.FileInputSt ...

  3. java客户端调用ftp上传下载文件

    1:java客户端上传,下载文件. package com.li.utils; import java.io.File; import java.io.FileInputStream; import ...

  4. 2013第38周日Java文件上传下载收集思考

    2013第38周日Java文件上传&下载收集思考 感觉文件上传及下载操作很常用,之前简单搜集过一些东西,没有及时学习总结,现在基本没啥印象了,今天就再次学习下,记录下自己目前知识背景下对该类问 ...

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

    前言 最近在项目中需要和ftp服务器进行交互,在网上找了一下关于ftp上传下载的工具类,大致有两种. 第一种是单例模式的类. 第二种是另外定义一个Service,直接通过Service来实现ftp的上 ...

  6. ftp上传下载工具类

    package com.taotao.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNo ...

  7. windows系统下ftp上传下载和一些常用命令

    先假设一个ftp地址 用户名 密码 FTP Server: home4u.at.china.com User: yepanghuang Password: abc123 打开windows的开始菜单, ...

  8. windows下ftp上传下载和一些常用命令

    先假设一个ftp地址 用户名 密码 FTP Server: home4u.at.china.com User: yepanghuang Password: abc123 打开windows的开始菜单, ...

  9. FTP上传下载工具(FlashFXP) v5.5.0 中文版

    软件名称: FTP上传下载工具(FlashFXP) 软件语言: 简体中文 授权方式: 免费试用 运行环境: Win 32位/64位 软件大小: 7.4MB 图片预览: 软件简介: FlashFXP 是 ...

随机推荐

  1. 【bzoj 3110】[Zjoi2013]K大数查询

    Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c.如果是2 a b c形式,表示询问从第a个位置到第b个位 ...

  2. 图像分类中max-pooling和average-pooling之间的异同

    池化操作时在卷积神经网络中经常采用过的一个基本操作,一般在卷积层后面都会接一个池化操作,但是近些年比较主流的ImageNet上的分类算法模型都是使用的max-pooling,很少使用average-p ...

  3. Docker 容器CPU设置

    CPU使用率其实就是你运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况.使用率越高,说明你的机器在这个时间上运行了很多程序,反之较少.CPU使用率的高低与你的CPU强弱有直接关系. ...

  4. pyqt5-定时器

    定时器的操作方法有两种: 方法一:利用每个对象包含的timerEvent函数 方法二:利用定时器模块    需要  from PyQt5.QtCore import QTimer 方法一:利用每个对象 ...

  5. Linux之vi编辑器的使用

    今天我们来说一下vi编辑器的使用,vi编辑器主要用来在Linux环境下编辑配置文件. 一.使用方法: 1.输入命令 vi filename,打开文件,处于一个查看模式 2.点击键盘 i,进入inser ...

  6. J - Joyful HDU - 5245 (概率)

    题目链接: J - Joyful  HDU - 5245 题目大意:给你一个n*m的矩阵,然后你有k次涂色机会,然后每一次可以选定当前矩阵的一个子矩阵染色,问你这k次用完之后颜色个数的期望. 具体思路 ...

  7. Handler的postDelayed的实现方法

    暂存,待归纳 https://www.jianshu.com/p/f5f710d55255 https://blog.csdn.net/qingtiantianqing/article/details ...

  8. FTP服务器的安装与配置

    查看是否安装ftp: rpm -qa |grep vsftpd 1.安装vsftp 1.1.安装vsftp,测试安装的vsftpd的版本是:vsftpd.x86_64 0:3.0.2-11.el7_2 ...

  9. 2017-2018-2 20165237 实验二《Java面向对象程序设计》实验报告

    ##2017-2018-2 20165237 实验二<Java面向对象程序设计>实验报告 No.1 实验要求: 实验三 敏捷开发与XP实践 http://www.cnblogs.com/r ...

  10. AbstractQueuedSynchronizer的简单介绍

    AbstractQueuedSynchronizer简称为AQS.大多数开发者不会直接使用AQS,标准同步器类的集合能够满足绝大多数情况的需求. 1.AbstractQueuedSynchronize ...