在此之前,在项目中加上FTP的架包

第一步:配置FTP服务器的相关配置

FtpConfig.java  实体类(配置类)

 package com.sxd.ftp;

 public class FtpConfig {
//主机ip
private String FtpHost = "192.168.18.252";
//端口号
private int FtpPort = 21;
//ftp用户名
private String FtpUser = "ftp";
//ftp密码
private String FtpPassword = "agenbiology";
//ftp中的目录 这里先指定的根目录
private String FtpPath = "/"; public String getFtpHost() {
return FtpHost;
}
public void setFtpHost(String ftpHost) {
FtpHost = ftpHost;
}
public int getFtpPort() {
return FtpPort;
}
public void setFtpPort(int ftpPort) {
FtpPort = ftpPort;
}
public String getFtpUser() {
return FtpUser;
}
public void setFtpUser(String ftpUser) {
FtpUser = ftpUser;
}
public String getFtpPassword() {
return FtpPassword;
}
public void setFtpPassword(String ftpPassword) {
FtpPassword = ftpPassword;
}
public String getFtpPath() {
return FtpPath;
}
public void setFtpPath(String ftpPath) {
FtpPath = ftpPath;
} }

第二步:

FtpUtils.java 实现简单的上传下载

 package com.sxd.ftp;

 import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import org.apache.commons.net.ftp.FTPClient;
import org.junit.Test; public class FtpUtils { /**
* 获取FTP连接
* @return
*/
public FTPClient getFTPClient() {
FtpConfig config = new FtpConfig();
FTPClient ftpClient = new FTPClient();
boolean result = true;
try {
//连接FTP服务器
ftpClient.connect(config.getFtpHost(), config.getFtpPort());
//如果连接
if (ftpClient.isConnected()) {
//提供用户名/密码登录FTP服务器
boolean flag = ftpClient.login(config.getFtpUser(), config.getFtpPassword());
//如果登录成功
if (flag) {
//设置编码类型为UTF-8
ftpClient.setControlEncoding("UTF-8");
//设置文件类型为二进制文件类型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
} else {
result = false;
}
} else {
result = false;
}
//成功连接并 登陆成功 返回连接
if (result) {
return ftpClient;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
} /**
*
* @param localPath本地路径
* @param fileName文件名
* @param newPath上传至FTP的新位置
* @return
*/
public boolean testUpload(String localPath,String fileName,String newPath) {
boolean result = true;
FileInputStream in = null;
FTPClient ftpClient = getFTPClient();
if (null == ftpClient) {
System.out.println("FTP服务器未连接成功!!!");
return false;
}
try {
//当前上传的文件
File file = new File(localPath+fileName);
in = new FileInputStream(file);
//上传至FTP服务器的新位置
ftpClient.changeWorkingDirectory(newPath);
//上传
ftpClient.storeFile(fileName, in);
System.out.println(ftpClient.printWorkingDirectory());
return result;
} catch (IOException e) {
e.printStackTrace();
return false;
} finally {
close(in, null, ftpClient);
}
} /**
* FTP下载
* @param fileName 文件名
* @param localPath
* @param remotePath
* @return
*/
public boolean testDownload(String localPath,String fileName, String remotePath) {
boolean result = true;
FileOutputStream out = null;
FTPClient ftpClient = getFTPClient();
if (null == ftpClient) {
System.out.println("FTP服务器未连接成功!!!");
return false;
}
try {
//要写到本地的位置
File file = new File(localPath + fileName);
out = new FileOutputStream(file);
//文件存储在FTP的位置
ftpClient.changeWorkingDirectory(remotePath);
//下载文件
ftpClient.retrieveFile(fileName, out);
System.out.println(ftpClient.printWorkingDirectory());
return result;
} catch (IOException e) {
e.printStackTrace();
return false;
} finally {
close(null, out, ftpClient);
}
} /**
* 关闭 输入流或输出流
* @param in
* @param out
* @param ftpClient
*/
public static void close(InputStream in, OutputStream out,FTPClient ftpClient) {
if (null != in) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("输入流关闭失败");
}
}
if (null != out) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("输出流关闭失败");
}
}
if (null != ftpClient) {
try {
ftpClient.logout();
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
System.out.println("Ftp服务关闭失败!");
}
}
} @Test
public void test(){
FtpConfig config = new FtpConfig();
//上传文件
// testUpload("D:/","new4.txt" , config.getFtpPath());
//下载
testDownload("D:/develop/", "new4.txt", config.getFtpPath()); }
}

【FTP】使用org.apache.commons.net.ftp.FTPClient 实现FTP的上传下载的更多相关文章

  1. 【FTP】org.apache.commons.net.ftp.FTPClient实现复杂的上传下载,操作目录,处理编码

    和上一份简单 上传下载一样 来,任何的方法不懂的,http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net ...

  2. Java 利用Apache Commons Net 实现 FTP文件上传下载

    package woxingwosu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...

  3. ftp上传下载 java FTPClient (zhuan)

    项目需要,网上搜了搜,很多,但问题也不少,估计转来转去,少了不少东西,而且也情况也不太一样.没办法,只能自己去写一个. 一,    安装sserv-u ftp服务器 版本10.1.0.1 我所设服务器 ...

  4. Java使用Apache Commons Net的FtpClient进行下载时会宕掉的一种优化方法

    在使用FtpClient进行下载测试的时候,会发现一个问题,就是我如果一直重复下载一批文件,那么经常会宕掉. 也就是说程序一直停在那里一动不动了. 每个人的情况都不一样,我的情况是因为我在本地之前就有 ...

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

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

  6. 【FTP】FTP文件上传下载-支持断点续传

    Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常 ...

  7. Java实现FTP上传下载功能

    Java FTP客户端工具包很多,在此我选用的Apache的FTPClient.这个包的获取可以通过http://commons.apache.org/net/来获取,我使用的是最新的commons- ...

  8. Android和FTP服务器交互,上传下载文件(实例demo)

    今天同学说他备份了联系人的数据放在一个文件里,想把它存到服务器上,以便之后可以进行下载恢复..于是帮他写了个上传,下载文件的demo 主要是 跟FTP服务器打交道-因为这个东东有免费的可以身亲哈 1. ...

  9. 简单的FTP上传下载(java实现 swing界面)

    /** *阅读前请自己在win7上建立FTP主机 *具体步骤如:http://jingyan.baidu.com/article/574c5219d466c36c8d9dc138.html * 然后将 ...

随机推荐

  1. 获取分组后的TOP 1和TOP N记录

    MySQL获取分组后的TOP 1和TOP N记录 有时会碰到一些需求,查询分组后的最大值,最小值所在的整行记录或者分组后的top n行的记录,在一些别的数据库可能有窗口函数可以方面的查出来,但是MyS ...

  2. django开发项目实例3--用session是实现简单的登陆、验证登陆和注销功能

    如果你的网页不是纯阅读型的,那么你很有可能希望在用户打开某些界面的时候需要验证用户是否登陆的信息, 虽然django里面有自带的一些user的类,但我看不懂,并且自己实现也不是很难,下面和大家分享一下 ...

  3. html,获取iframe的window,document,自定事件与iframe通信

      获取iframe的window对象js代码如下.注意:一定要在文档加载完成之后,才能获取到 var Iframe=document.getElementById("script" ...

  4. 【python】dict的拷贝问题

    部分来源:http://blog.sina.com.cn/s/blog_5c6760940100bmg5.html ①直接赋值 ---- 结果是不同名的引用 对新字典的修改完全作用在了原来的字典上,只 ...

  5. Developer Express控件gridcontrol中gridView的某一个单元格是否可以自由输入

    场景:在Developer Express控件gridcontrol中的gridView中,当医生开的临时医嘱的医嘱类型为"中草药","计价总量"单元格不可以自 ...

  6. react初体验

    function Guest() { return ( <h1>pls login in</h1> ); } function User() { return ( <h1 ...

  7. “无法识别的配置节system.webServer”解决办法

    在Winsows 2008 Server 上安装asp.net 1.1 的应用程序,在启用默认文档或者浏览目录时会向 web.config 文件添加 <system.webServer> ...

  8. SQLiScanner:又一款基于SQLMAP和Charles的被动SQL 注入漏洞扫描工具

    https://blog.csdn.net/qq_27446553/article/details/52610095

  9. Java学习笔记(一)——关于java中的String类

    [前面的话] 毕业将近6个月了,试用期也快要过去了,期待接下来的日子.在金融类性质的机构,最痛苦的是也许就是大部分系统外包,所以比较少写代码,在这六个月中只写了1个月左右的代码,然后每天都在做一些比较 ...

  10. [水煮 ASP.NET Web API2 方法论](1-1)在MVC 应用程序中添加 ASP.NET Web API

    问题 怎么样将 Asp.Net Web Api 加入到现有的 Asp.Net MVC 项目中 解决方案 在 Visual Studio 2012 中就已经把 Asp.Net Web Api 自动地整合 ...