FtpUtil.java

  1. import java.io.File;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.OutputStream;
  7. import java.net.SocketException;
  8. import org.apache.commons.logging.Log;
  9. import org.apache.commons.logging.LogFactory;
  10. import org.apache.commons.net.ftp.FTP;
  11. import org.apache.commons.net.ftp.FTPClient;
  12. import org.apache.commons.net.ftp.FTPReply;
  13.  
  14. public class FtpUtil {
  15.  
  16. private final static Log logger = LogFactory.getLog(FtpUtil.class);
  17.  
  18. /**
  19. * 获取FTPClient对象
  20. *
  21. * @param ftpHost
  22. * FTP主机服务器
  23. * @param ftpPassword
  24. * FTP 登录密码
  25. * @param ftpUserName
  26. * FTP登录用户名
  27. * @param ftpPort
  28. * FTP端口 默认为21
  29. * @return
  30. */
  31. public static FTPClient getFTPClient(String ftpHost, String ftpUserName,
  32. String ftpPassword, int ftpPort) {
  33. FTPClient ftpClient = new FTPClient();
  34. try {
  35. ftpClient = new FTPClient();
  36. ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器
  37. ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器
  38. if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
  39. logger.info("未连接到FTP,用户名或密码错误。");
  40. ftpClient.disconnect();
  41. } else {
  42. logger.info("FTP连接成功。");
  43. }
  44. } catch (SocketException e) {
  45. e.printStackTrace();
  46. logger.info("FTP的IP地址可能错误,请正确配置。");
  47. } catch (IOException e) {
  48. e.printStackTrace();
  49. logger.info("FTP的端口错误,请正确配置。");
  50. }
  51. return ftpClient;
  52. }
  53.  
  54. /**
  55. * 下载文件
  56. *
  57. * @param ftpHost ftp服务器地址
  58. * @param ftpUserName anonymous匿名用户登录,不需要密码。administrator指定用户登录
  59. * @param ftpPassword 指定用户密码
  60. * @param ftpPort ftp服务员器端口号
  61. * @param ftpPath ftp文件存放物理路径
  62. * @param fileName 文件路径
  63. * @param input 文件输入流,即从本地服务器读取文件的IO输入流
  64. */
  65. public static void downloadFile(String ftpHost, String ftpUserName,
  66. String ftpPassword, int ftpPort, String ftpPath, String localPath,
  67. String fileName) {
  68. FTPClient ftpClient = null;
  69.  
  70. try {
  71. ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);
  72. ftpClient.setControlEncoding("UTF-8"); // 中文支持
  73. ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
  74. ftpClient.enterLocalPassiveMode();
  75. ftpClient.changeWorkingDirectory(ftpPath);
  76.  
  77. File localFile = new File(localPath + File.separatorChar + fileName);
  78. OutputStream os = new FileOutputStream(localFile);
  79. ftpClient.retrieveFile(fileName, os);
  80. os.close();
  81. ftpClient.logout();
  82.  
  83. } catch (FileNotFoundException e) {
  84. logger.error("没有找到" + ftpPath + "文件");
  85. e.printStackTrace();
  86. } catch (SocketException e) {
  87. logger.error("连接FTP失败.");
  88. e.printStackTrace();
  89. } catch (IOException e) {
  90. e.printStackTrace();
  91. logger.error("文件读取错误。");
  92. e.printStackTrace();
  93. }
  94. }
  95.  
  96. /**
  97. * 上传文件
  98. *
  99. * @param ftpHost ftp服务器地址
  100. * @param ftpUserName anonymous匿名用户登录,不需要密码。administrator指定用户登录
  101. * @param ftpPassword 指定用户密码
  102. * @param ftpPort ftp服务员器端口号
  103. * @param ftpPath ftp文件存放物理路径
  104. * @param fileName 文件路径
  105. * @param input 文件输入流,即从本地服务器读取文件的IO输入流
  106. */
  107. public static void uploadFile(String ftpHost, String ftpUserName,
  108. String ftpPassword, int ftpPort, String ftpPath,
  109. String fileName,InputStream input){
  110. FTPClient ftp=null;
  111. try {
  112. ftp=getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);
  113. ftp.changeWorkingDirectory(ftpPath);
  114. ftp.setFileType(FTP.BINARY_FILE_TYPE);
  115. fileName=new String(fileName.getBytes("GBK"),"iso-8859-1");
  116. ftp.storeFile(fileName, input);
  117. input.close();
  118. ftp.logout();
  119. System.out.println("upload succes!");
  120. } catch (Exception e) {
  121. e.printStackTrace();
  122. }
  123. }
  124.  
  125. }

FtpTest.java

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import org.junit.Test;
  4.  
  5. public class FtpTest {
  6.  
  7. String ftpHost= "192.168.xx.xx"; //ftp服务器地址
  8. int ftpPort = 21;//ftp服务员器端口号
  9. String ftpUserName = "administrator";//anonymous匿名用户登录,不需要密码。administrator指定用户登录
  10. String ftpPassword = "888888";//指定用户密码
  11. String ftpPath = "ftpdir/"; //ftp文件存放物理路径
  12. String filePath=""; //文件路径
  13. String fileName="";//文件名称
  14.  
  15. @Test
  16. public void test() throws Exception {
  17. filePath="E:/download";
  18. fileName="11.txt";
  19. FtpUtil.downloadFile(ftpHost, ftpUserName, ftpPassword, ftpPort,
  20. ftpPath, filePath, fileName);
  21.  
  22. filePath="E:/upload";
  23. fileName="upload.txt";
  24. FileInputStream input=new FileInputStream(new File(filePath+File.separatorChar+fileName));
  25. FtpUtil.uploadFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, fileName, input);
  26. }
  27.  
  28. }

java链接FTP实现上传和下载的更多相关文章

  1. Java实现FTP文件上传与下载

    实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式),分别为:1.通过JDK自带的API实现:2.通过Apache提供的API是实现. 第一种方式 package com.cl ...

  2. Java 实现ftp 文件上传、下载和删除

    本文利用apache ftp工具实现文件的上传下载和删除.具体如下: 1.下载相应的jar包 commons-net-1.4.1.jar 2.实现代码如下: public class FtpUtils ...

  3. java客户端文件的上传和下载

    java客户端文件的上传和下载 //上传 public JTable upload(String id){ JTable table=new JTable(); System.out.println( ...

  4. FTP文件上传和下载(JAVA)

    前文 1.使用FTP的方式进行文件的上传和下载(非SFTP) 2.本人手打,亲测,代码是最简单的,清晰易懂,需要的同学请结合自己的实际添加业务逻辑 2.第三方的jar包:import org.apac ...

  5. java操作vaftpd实现上传、下载

    1.配置文件conf/vsftpd.properties (我是单独写了一个配置文件,你可以直接写在application中) vsftpd.ip=192.168.**.** vsftpd.user= ...

  6. java实现文件的上传和下载

    1. servlet 如何实现文件的上传和下载? 1.1上传文件 参考自:http://blog.csdn.net/hzc543806053/article/details/7524491 通过前台选 ...

  7. Java中文件的上传与下载

    文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar  commons-io.jar apache的commons-fileupload实现文件上传,下载 [u ...

  8. java web(四)文件上传与下载

     一.文件上传原理 1.在TCP/IP中,最早出现的文件上传机制是FTP ,它是将文件由客户端发送到服务器的标准机制:但是在jsp使用过程中不能使用FTP方法上传文件,这是由jsp运行机制所决定. 通 ...

  9. linux ftp批量上传和下载文件

    一.登录ftp 输入 ftp 192.168.1.111 输入用户名:ftpuser 输入密码:aaa123 二.转到目标目录 输入:cd   test   ----test为文件夹 三.批量上传 输 ...

随机推荐

  1. java IO切割流合并流

    切割流,将一个较大的文件,切割成多个小文件存储

  2. LwIP raw api下使用tcp keep alive

    // The following code is implemented after tcp_new() or in tcp_connected call back... xxx_connected( ...

  3. centos7安装Hive2.3.0

    1.下载Hive2.3.0 wget http://mirror.bit.edu.cn/apache/hive/hive-2.3.0/apache-hive-2.3.0-bin.tar.gz 2.解压 ...

  4. 通过 CeSi + Supervisor 可视化集中管理服务器节点进程

    通过 CeSi + Supervisor 可视化集中管理服务器节点进程 简介 Supervisor 的安装及基本使用 1. 安装 2. 基本使用  2.1 启动 supervisor 2.2 Supe ...

  5. Spring中的后置处理器BeanPostProcessor讲解

    Spring中提供了很多PostProcessor供开发者进行拓展,例如:BeanPostProcessor.BeanFactoryPostProcessor.BeanValidationPostPr ...

  6. 汇编,浮点运算符,fldpi,fmul等指令说明.

    协处理器指令系统 协处理器共有68条不同的指令,汇编程序在遇到协处理器指令助记符时,都会将其转换成机器语言的ESC指令,ESC指令代表了协处理器的操作码. 协处理器指令在执行过程中,需要访问内存单元时 ...

  7. 用Keras搭建神经网络 简单模版(二)——Classifier分类(手写数字识别)

    # -*- coding: utf-8 -*- import numpy as np np.random.seed(1337) #for reproducibility再现性 from keras.d ...

  8. [UE4]C++ STL总结

    STL概述 STL (Standard Template Library, 标准模板库) 是惠普实验室开发的一系列软件的统称.主要核心分为三大部分:容器(container).算法(algorithm ...

  9. javascript继承之组合继承(三)

    function Father(name) { this.name = name; } Father.prototype.say = function () { return this.name; } ...

  10. 【Python编程:从入门到实践】chapter10 文件和异常

    chapter10 文件和异常 10.1 从文件中读取数据 10.1.1 读取整个文件 with open("pi.txt") as file_object: contents = ...