1.pom文件中添加依赖

<!-- ftp使用 -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency> 2.代码样例:
package com.migu.reading.utils;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply; import com.migu.reading.iufs.domain.InviteResultCode;
import com.migu.reading.iufs.domain.IufsException; import java.io.*;
import java.net.SocketException; public class FtpUtil
{ private static final Log LOGGER = LogFactory.getLog(FtpUtil.class); /**
* 获取FTPClient对象
*
* @param ftpHost
* FTP主机服务器
* @param ftpPassword
* FTP 登录密码
* @param ftpUserName
* FTP登录用户名
* @param ftpPort
* FTP端口 默认为21
* @return
* @throws IOException
* @throws Exception
*/
public static FTPClient getFTPClient(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort)
{
FTPClient ftpClient = new FTPClient();
try
{
ftpClient = new FTPClient();
ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器
ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器
if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode()))
{
LOGGER.info("未连接到FTP,用户名或密码错误。");
ftpClient.disconnect();
}
else
{
LOGGER.info("FTP连接成功。");
}
}
catch (SocketException e)
{
LOGGER.error("FTP的IP地址可能错误,请正确配置。e:{}" + e);
}
catch (IOException e)
{
LOGGER.error("FTP的端口错误,请正确配置。e:{}" + e);
}
return ftpClient;
} /**
* 下载文件
*
* @param ftpHost ftp服务器地址
* @param ftpUserName 用户名
* @param ftpPassword 指定用户密码
* @param ftpPort ftp服务器端口号
* @param ftpPath ftp文件存放物理路径
* @param localPath 下载到的本地路径
*/
public static boolean downloadFile(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort,
String ftpPath, String localPath)
{
FTPClient ftpClient = null;
boolean result = false;
boolean createOrExistsDir = FileTools.createOrExistsDir(localPath);
if (!createOrExistsDir)
{
LOGGER.error("FtpUtil.downloadFile create localPath error");
return result;
}
try
{
ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);
// 设置被动模式,开通一个端口来传输数据
ftpClient.enterLocalPassiveMode();
ftpClient.setControlEncoding("UTF-8"); // 中文支持
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.setBufferSize(500);
// 截取路径
String path = ftpPath.substring(0, ftpPath.lastIndexOf("/") + 1);
boolean changeWorkingDirectory =
ftpClient.changeWorkingDirectory(new String(path.getBytes(), "ISO-8859-1")); if (changeWorkingDirectory)
{
File ftpPathFile = new File(ftpPath);
File localFile = new File(localPath + "/" + ftpPathFile.getName()); FileOutputStream os = new FileOutputStream(localFile);
String ftpPathFileName = new String(ftpPathFile.getName().getBytes("UTF-8"), "ISO-8859-1");
result = ftpClient.retrieveFile(ftpPathFileName, os);
os.close();
ftpClient.logout();
}
else
{
LOGGER.error("FtpUtil.downloadFile ftpPath is error");
throw new IufsException(InviteResultCode.FTP_PATH_ERROR.getCode(),
InviteResultCode.FTP_PATH_ERROR.getDesc());
}
// ftpClient.listDirectories()
// 判断文件是否存在
// String file = ftpPath.substring(ftpPath.lastIndexOf("/") + 1);
// //
// InputStream is =
// ftpClient.retrieveFileStream(new String(file.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING));
// if (is == null || ftpClient.getReplyCode() == FTPReply.FILE_UNAVAILABLE)
// {
// throw new IufsException(InviteResultCode.FTP_PATH_ERROR.getCode(),
// InviteResultCode.FTP_PATH_ERROR.getDesc());
// }
// is.close();
// ftpClient.completePendingCommand(); return result;
}
catch (FileNotFoundException e)
{
LOGGER.error("没有找到" + ftpPath + "文件,e:{}", e);
return false;
}
catch (SocketException e)
{
LOGGER.error("连接FTP失败.e:{}", e);
return false;
}
catch (IOException e)
{
LOGGER.error("文件读取错误。e:{}", e);
return false;
}
} /**
* 上传文件
*
* @param ftpHost ftp服务器地址
* @param ftpUserName anonymous匿名用户登录,不需要密码。administrator指定用户登录
* @param ftpPassword 指定用户密码
* @param ftpPort ftp服务员器端口号
* @param ftpPath ftp文件存放物理路径
* @param fileName 文件路径 */
public static void uploadFile(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort, String ftpPath,
String fileName, InputStream input)
{
FTPClient ftp = null;
try
{
ftp = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);
ftp.changeWorkingDirectory(ftpPath);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
fileName = new String(fileName.getBytes("GBK"), "iso-8859-1");
boolean storeFile = ftp.storeFile(fileName, input);
System.out.println("是否上传成功--" + storeFile);
input.close();
ftp.logout();
System.out.println("upload succes!");
}
catch (Exception e)
{
e.printStackTrace();
}
} @SuppressWarnings("unused")
private static boolean downFileOrDir(String ftpFilePath, String localDir, String ftpHost, String ftpUserName,
String ftpPassword, int ftpPort)
{ boolean result = true; FileOutputStream fos = null;
FTPClient ftpClient = null;
try
{
ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort); File file = new File(ftpFilePath);
File temp = new File(localDir);
ftpClient.enterLocalPassiveMode();
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); if (!temp.exists())
{
if (!temp.mkdirs())
{
}
}
// 如果不是目录则表示是单个文件的下载
String filePathsss = ftpFilePath.substring(0, ftpFilePath.lastIndexOf("/") + 1);
boolean b = ftpClient.changeWorkingDirectory(filePathsss);
if (!b)
{
LOGGER.error("------------ftpFile not exists-------------");
// 报错
}
String[] names = ftpClient.listNames();
for (String name : names)
{
if (file.getName().equals(name))
{
File localfile = new File(localDir + File.separator + file.getName());
if (!localfile.exists())
{
fos = new FileOutputStream(localfile);
result = ftpClient.retrieveFile(file.getName(), fos);
}
else
{
if (!localfile.delete())
{
}
fos = new FileOutputStream(localfile);
result = ftpClient.retrieveFile(file.getName(), fos);
}
ftpClient.changeToParentDirectory();
return result;
}
}
}
catch (IOException e)
{
try
{
if (null != fos)
{
fos.close();
}
}
catch (IOException e1)
{
}
result = false;
}
catch (Exception e)
{
result = false;
}
finally
{
try
{
if (null != fos)
{
fos.close();
}
}
catch (IOException e)
{
}
}
return result;
} public static void main(String[] args)
{
/*****下载文件*********/
// boolean downloadFile = downloadFile("10.211.93.173",
// "commonservice",
// "1qaz@WSX",
// 21,
// "/home/commonservice/data/vcode/muban.zip",
// "D://file");
// System.out.println("是否下载成功===》" + downloadFile); // boolean downloadFile = downFileOrDir("/home/commonservice/data/vcode/vcodeTemplate20190402162646.zip",
// "D://file",
// "10.211.93.173",
// "commonservice",
// "1qaz@WSX",
// 21);
// System.out.println(downloadFile);
// "ftp://10.211.93.173/aa.zip"
// "ftp://10.211.93.173/copyrights_exportFile/Copyrights_20171101164204.zip",
// boolean downloadFile =
// downFileOrDir("ftp://10.211.93.173/aa.zip", "D://file", "10.211.93.173", "commonservice", "1qaz@WSX", 21);
// System.out.println(downloadFile); /********上传******************/
// String filePath = "D:\\file";
// String fileName = "muban.zip";
// FileInputStream input = null;
// try
// {
// input = new FileInputStream(new File(filePath + File.separatorChar + fileName));
// }
// catch (FileNotFoundException e)
// {
// e.printStackTrace();
// }
// uploadFile("10.211.93.173",
// "commonservice",
// "1qaz@WSX",
// 21,
// "/home/commonservice/data/vcode/",
// fileName,
// input);
}
}

ftp使用的更多相关文章

  1. 8.仿阿里云虚拟云服务器的FTP(包括FTP文件夹大小限制)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#iis 原文:http://dnt.dkill.net/Ar ...

  2. Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...

  3. 阿里云学生优惠Windows Server 2012 R2安装IIS,ftp等组件,绑定服务器域名,域名解析到服务器,域名备案,以及安装期间错误的解决方案

     前言: 这几天终于还是按耐不住买了一个月阿里云的学生优惠.只要是学生,在学信网上注册过,并且支付宝实名认证,就可以用9块9的价格买阿里云的云服务ECS.确实是相当的优惠. 我买的是Windows S ...

  4. win7下利用ftp实现华为路由器的上传和下载

    win7下利用ftp实现华为路由器的上传和下载 1.  Win7下ftp的安装和配置 (1)开始->控制面板->程序->程序和功能->打开或关闭Windows功能 (2)在Wi ...

  5. Java实现FTP文件与文件夹的上传和下载

    Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...

  6. centos下开启ftp服务

    如果要ftp访问linux需要安装ftp服务,vsftpd是Linux下比较好的的FTP服务器. 一.检查安装vsftp //检查是否安装vsftpd rpm -qa | grep vsftpd // ...

  7. 解决开启服务器防火墙导致ftp不能连接的问题

    在防火墙设置的"高级"选项卡中的"网络连接设置"--"本地连接"--"设置"中添加了"FTP服务器" ...

  8. centos6.5 nginx-1.8.0和ftp搭建图片服务器

    一.Nginx的安装步骤 1.Nginx安装环境: gcc: 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c+ ...

  9. Jenkins配置MSBuild实现自动部署(MSBuild+SVN/Subversion+FTP+BAT)

    所要用到的主要插件: [MSBuild Plugin] 具体操作: 1.配置MSBuild的版本 [系统管理]->[Global Tool Configuration]->[MSBuild ...

  10. [CentOs7]搭建ftp服务器(2)——添加用户

    摘要 上篇文章完成了ftp服务器的安装与匿名访问的内容,当然出于安全的考虑是不允许匿名访问服务器的,所以就有了本篇的内容 ,为ftp服务器添加用户,用改用户进行访问. vsftpd添加用户 FTP用户 ...

随机推荐

  1. Spring AOP 复习

    Aspect Oriented Programming 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,利用aop可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降 ...

  2. Nginx深入详解之upstream分配方式

    一.分配方式 Nginx的upstream支持5种分配方式,下面将会详细介绍,其中,前三种为Nginx原生支持的分配方式,后两种为第三方支持的分配方式: 1.轮询 轮询是upstream的默认分配方式 ...

  3. 7.JavaScript-Promise的并行和串行

    Promise 并行 Promise.all是所有的Promise执行完毕后(reject|resolve)返回一个Promise对象. 最近在开发一个项目中,需要等接口拿到全部数据后刷新页面,取消l ...

  4. jQuery源码学习一: 创建一个jquery实例

    前言: jquery是每个前端都会的基础技能,众所周知,jquery返回的是jquery实例方法,但是我们似乎是直接使用$就可以获取到jquery的方法啦,可以在浏览器中判断一下 window.$ 和 ...

  5. Android中自定义水球

    如图所示: 自定义属性: 在values下创建attrs.xml 文件 <?xml version="1.0" encoding="utf-8"?> ...

  6. Golang: 解析JSON数据之一

    JSON 作为目前最流行的数据传输格式, 相信每个程序员都跟它打过交道吧.使用 Go 语言时,也不可避免的要操作 JSON 数据,令人惊喜的是,Go 内置了序列化和反序列化 JSON 的功能,今天就来 ...

  7. Java面向对象 练习(类、对象、方法)

    知识点:构造方法.继承.方法重载.方法重写 一. 定义一个点(Point)类,用来表示三维空间中的点(有三个坐标),要求如下: 1.可以生成具有特定坐标的点对象(构造方法): 2.提供可以设置三个坐标 ...

  8. python遍历列表删除多个元素的坑

    如下代码,遍历列表,删除列表中的偶数时,结果与预期不符. a = [11, 20, 4, 5, 16, 28] for i in a: if i % 2 == 0: a.remove(i) print ...

  9. dfs 正则表达式

    192. 通配符匹配 中文 English 判断两个可能包含通配符“?”和“*”的字符串是否匹配.匹配规则如下: '?' 可以匹配任何单个字符. '*' 可以匹配任意字符串(包括空字符串). 两个串完 ...

  10. Beta 冲刺随笔汇总

    作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Beta冲刺(团队) 团队名称 基于云的胜利冲锋队 作业目标 汇总随笔 团队信息 团队名称:基于云的胜利冲锋队 ...