Java代码实现FTP单个文件下载(二)

一:下载commons-net-1.4.1.jar包,放到lib下,并加载到.classpath文件中

二:编写工具类FtpUtil.Java如下

  1. package common;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.OutputStream;
  7. import java.net.SocketException;
  8. import java.util.Properties;
  9. import org.apache.log4j.Logger;
  10. import org.apache.commons.logging.Log;
  11. import org.apache.commons.logging.LogFactory;
  12. import org.apache.commons.net.ftp.*;
  13. public class FtpUtil {
  14. private final static Log logger = LogFactory.getLog(FtpUtil.class);
  15. /**
  16. * 获取FTPClient对象
  17. *
  18. * @param ftpHost
  19. *            FTP主机服务器
  20. * @param ftpPassword
  21. *            FTP 登录密码
  22. * @param ftpUserName
  23. *            FTP登录用户名
  24. * @param ftpPort
  25. *            FTP端口 默认为21
  26. * @return
  27. */
  28. public static FTPClient getFTPClient(String ftpHost, String ftpUserName,
  29. String ftpPassword, int ftpPort) {
  30. FTPClient ftpClient = new FTPClient();
  31. try {
  32. ftpClient = new FTPClient();
  33. ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器
  34. ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器
  35. if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
  36. logger.info("未连接到FTP,用户名或密码错误。");
  37. ftpClient.disconnect();
  38. } else {
  39. logger.info("FTP连接成功。");
  40. }
  41. } catch (SocketException e) {
  42. e.printStackTrace();
  43. logger.info("FTP的IP地址可能错误,请正确配置。");
  44. } catch (IOException e) {
  45. e.printStackTrace();
  46. logger.info("FTP的端口错误,请正确配置。");
  47. }
  48. return ftpClient;
  49. }
  50. /*
  51. * 从FTP服务器下载文件
  52. *
  53. * @param ftpHost FTP IP地址
  54. *
  55. * @param ftpUserName FTP 用户名
  56. *
  57. * @param ftpPassword FTP用户名密码
  58. *
  59. * @param ftpPort FTP端口
  60. *
  61. * @param ftpPath FTP服务器中文件所在路径 格式: ftptest/aa
  62. *
  63. * @param localPath 下载到本地的位置 格式:H:/download
  64. *
  65. * @param fileName 文件名称
  66. */
  67. public static void downloadFtpFile(String ftpHost, String ftpUserName,
  68. String ftpPassword, int ftpPort, String ftpPath, String localPath,
  69. String fileName) {
  70. FTPClient ftpClient = null;
  71. try {
  72. ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);
  73. ftpClient.setControlEncoding("UTF-8"); // 中文支持
  74. ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
  75. ftpClient.enterLocalPassiveMode();
  76. ftpClient.changeWorkingDirectory(ftpPath);
  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. } catch (FileNotFoundException e) {
  83. logger.error("没有找到" + ftpPath + "文件");
  84. e.printStackTrace();
  85. } catch (SocketException e) {
  86. logger.error("连接FTP失败.");
  87. e.printStackTrace();
  88. } catch (IOException e) {
  89. e.printStackTrace();
  90. logger.error("文件读取错误。");
  91. e.printStackTrace();
  92. }
  93. }
  94. }

三、测试代码

假设已经存在一个FTP服务器,登录的用户名和密码为zyf,端口为22,登后的家目录下进入ftpdir目录,下面有一个11.txt文件用于下载测试

  1. package scripts.testscript;
  2. import org.testng.annotations.Test;
  3. import common.FtpUtil;
  4. public class FtpDownloadTestScript {
  5. @Test
  6. public void run() {
  7. String ftpHost = "192.168.26.132";
  8. String ftpUserName = "zyf";
  9. String ftpPassword = "zyf";
  10. int ftpPort = 21;
  11. String ftpPath = "ftpdir/";
  12. String localPath = "H:/download";
  13. String fileName = "11.txt";
  14. FtpUtil.downloadFtpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, localPath, fileName);
  15. }
  16. }
时间: 2024-11-05 23:50:01

Java代码实现FTP单个文件下载(二)的相关文章

JAVA代码发送邮件示例和解释(二)

之前有使用过一次在程序中发邮件的功能,也写了一篇相关的笔记,当时使用的是163邮箱,经过测试多个163账号都是可行的.但是最近把账号换成中国移动@chinamobilesz.com这种结尾的时候,却一直连接不上服务器,验证不通过,于是只好重新进行了一些改动,这期间也有参考另一个同事之前的写法,成功实现. 这种实现方式和上一种大同小异,只是经过测试后,这种方式不仅163的邮箱没有问题,中国移动@chinamobilesz.com这种也可以,因此相对前边写的那种应该要更好一些,具体代码如下: pac

JAVA代码实现下载单个文件,和下载打包文件

//下载单个文件调用方法 /**     * response     * imgPath 下载图片地址    * fileName 保存下载文件名称    * @date 2015年4月14日 下午5:53:24     */     public static void download(HttpServletResponse response,String imgPath,String fileName){         OutputStream out=null;         Bu

UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现

UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现 测试数据 java代码 1 package com.hzf.spark.study; 2 3 import java.util.Map; 4 import java.util.Set; 5 6 import org.apache.spark.SparkConf; 7 import org.apache.spark.api.java.JavaPairRDD; 8 import org.apache.s

采用jsp页面与java代码分离的方式写一个简单的二维表

前提:在我们做程序时追求的是高内聚,低耦合,但是如果我们把jsp页面的的代码和java的代码都放在了jsp的代码编写中,使java和jsp高耦合这样的话不仅使jsp代码页面显得很复杂,而且也特别让不利于以后的维护,所以我们有了一个不成文的规范就是分层架构,把javad代码与jsp的代码分离开来,使jsp代码页中更加干净整洁. 下面我将于用jsp和java代码分离的方法做出这样的一个二维表(做一个jsp页面动态显示信息表) 第一步:首先我们需要一个实体类用于存放一个人的一整条信息(根据表格信息有编

Java代码输出是“father”还是“child”(二)

1.实例 /** * 以下代码输出的结果是 */ package com.you.model; /** * @author YouHaidong * 输出的结果 */ public class FatherChild { /** * @param args */ @SuppressWarnings("static-access") public static void main(String[] args) { Father father = new Father(); Father

Java中实现FTP上传下载文件的功能,完整代码

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法.下载文件的通用方法以及删除文件.在ftp服务器上穿件文件夹.检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码: package ftpDemo;         import java.io.DataOutputStream;         import java.io.InputStream;         import java.io.Out

java代码解析二维码

java代码解析二维码一般步骤 本文采用的是google的zxing技术进行解析二维码技术,解析二维码的一般步骤如下: 一.下载zxing-core的jar包: 二.创建一个BufferedImageLuminanceSource类继承LuminanceSource,此类在google的源码中有,但是为了使用方便,下面有此类的源码,可以直接复制使用: private final BufferedImage image; private final int left; private final

转载:二次指数平滑法求预测值的Java代码

原文地址: http://blog.csdn.net/qustmeng/article/details/52186378?locationNum=4&fps=1 import java.util.LinkedList; import java.util.List;  public class Demo {     /**      * 二次指数平滑法求预测值      * @param list 基础数据集合      * @param year 未来第几期      * @param modu

Spring进阶—如何用Java代码实现邮件发送(二)

上次给大家分享了怎样发送简单邮件,本次给大家继续分享附件的发送.内嵌html.模版文件的发送. 发送带附件的邮件: Multipart email允许添加附件和内嵌资源(inline resources): 使用一个简单的JPEG图片作为附件,android.png放在工程的根目录,以相对路径的方式加载. 发送内嵌资源的邮件: 内嵌资源可能是你在信件中希望使用的图像或样式表,但是又不想把它们作为附件. 内嵌资源源使用Content-ID(上例中是android.png)来插入到mime信件中去.