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. 更新.net core 3.0,dotnet ef命令无法使用的解决办法

    之前项目采用.net core 2.2 实现,今天更新vs2019,系统.net core也被升级到3.0,在cmd中使用dotnet ef命令出现 “无法执行,因为找不到指定的命令或文件.可能的原因 ...

  2. Google Chrome 浏览器JS无法更新解决办法

    JS无法更新原因: 浏览器为了加载快,默认是按照自定规则更新缓存,非实时更新. 我们在开发的时候,JS变动很快,需要即时让浏览器加载最新文件,也就是禁用浏览器缓存 (1)使用F12进入开发者模式,找到 ...

  3. MySQL之简介以及数据类型(一)

    一:关系型数据库 所谓的关系型数据库RDBMS,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据. 二:关系型数据库的主要产品: oracle:在以前的大型项目中使用 ...

  4. English--动词时态

    English|动词时态 时态是一个很玄乎的东西,要么是完全掌握,要么是不知所云. 在正式开始之前,大家需要明白汉语的谓语动词是不会随着时间与状态而变化.但是,英语的谓语动词会随着时间与状态发生变化. ...

  5. 英语caement单词caement水泥

    水泥石  又称净浆硬化体.是指 硬化后的水泥浆体,称为水泥石,在英语里是cement有时写作caement [1] ,是由胶凝体.未水化的水泥颗粒内核.毛细孔等组 成的非均质体. 中文名:水泥石 外 ...

  6. Cheat Engine 修改汇编指令

    打开游戏 扫描阳光 扫描过程就不讲了 找到阳光的地址 显示反汇编 找到使阳光减少的反汇编代码 空指令替换 将阳光减少汇编指令,用空指令替换.这样阳光就不再减少了 指令替换 也可以将汇编指令修改,减少变 ...

  7. H3C CSMA/CA

  8. k8s几种pod的控制器

    replicationcontroller 选择器 模版 副本数   如果更改选择器,则会创建新的pod 如果更改pod的标签,那么也会创建新的pod进行替换,但是老的pod不会被删除 如果更改模版, ...

  9. golang http 服务器的接口梳理

    golang http 服务器的接口梳理 Golang构建HTTP服务(二)--- Handler,ServeMux与中间件 Hanlde和HandleFunc以及Handler, HandlerFu ...

  10. 【转】STM32利用FATFS读写数组

    因为存为TXT可以实现,但是读取TXT里边的数据总是不尽如人意,所以,最终存为bin文件了. 先摘几个观点: http://www.openedv.com/posts/list/36712.htm “ ...