原文:http://www.open-open.com/code/view/1420774470187

package com.demo.ftp;  

    import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ConnectException; import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply; /**
* @author wobendiankun 2015-1-8 下午08:11:08
*/
public class FtpClientUtil {
/**
* ftp服务器地址
*/
private String server;
/**
* 端口
*/
private int port;
/**
* 用户名
*/
private String username;
/**
*
*/
private String password; public FtpClientUtil () {
server = "localhost";
port = 21;
username = "kun";
password = "111111";
} public FtpClientUtil(String server, int port, String username,
String password) {
this.server = server;
this.port = port;
this.username = username;
this.password = password;
}
/**上传文件
* @param remoteFileName 远程文件名称
* @param locaFileName 本地文件名称
*/
public void upload(String remoteFileName,String locaFileName){
FTPClient ftp=null;
try {
ftp = new FTPClient();
ftp.addProtocolCommandListener( new PrintCommandListener( new PrintWriter( System.out ), true ) );
//连接ftp服务器
connect( ftp );
//设置属性
setProperty( ftp );
//上传文件
upload( ftp, remoteFileName, locaFileName );
//退出
logout( ftp );
} catch (Exception e) {
e.printStackTrace();
}finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException f) {
}
}
} }
/**上传文件
* @param remoteFileName 远程文件名称
* @param locaFileName 本地文件名称
*/
public void download(String remoteFileName,String locaFileName){
FTPClient ftp=null;
try {
ftp = new FTPClient();
ftp.addProtocolCommandListener( new PrintCommandListener( new PrintWriter( System.out ), true ) );
//连接ftp服务器
connect( ftp );
//设置属性
setProperty( ftp );
//下载文件
download( ftp, remoteFileName, locaFileName );
//退出
logout( ftp );
} catch (Exception e) {
e.printStackTrace();
}finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException f) {
}
}
}
}
/**创建文件夹
* @param remotePathName 远程文件夹名称
*/
public void mkdir(String remotePathName) {
FTPClient ftp=null;
try {
ftp = new FTPClient();
ftp.addProtocolCommandListener( new PrintCommandListener( new PrintWriter( System.out ), true ) );
//连接ftp服务器
connect( ftp );
//设置属性
setProperty( ftp );
//创建文件夹
mkdir( ftp, remotePathName);
//退出
logout( ftp );
} catch (Exception e) {
e.printStackTrace();
}finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException f) {
}
}
}
}
/**
* @param ftp
* @param remotePathName
*/
private void mkdir(FTPClient ftp, String remotePathName) throws Exception{
ftp.makeDirectory(remotePathName);
} /**
* @param ftp
* @param remoteFileName
* @param locaFileName
*/
private void download(FTPClient ftp, String remoteFileName,
String locaFileName) throws Exception{
OutputStream output=null;
output = new FileOutputStream(locaFileName);
ftp.retrieveFile(remoteFileName, output);
output.close();
} /**
* @param ftp
* @throws Exception
*/
private void setProperty(FTPClient ftp) throws Exception {
ftp.enterLocalPassiveMode();
//二进制传输,默认为ASCII
ftp.setFileType(FTP.BINARY_FILE_TYPE);
} /**
* @param ftp
*/
private void logout(FTPClient ftp) throws Exception{
ftp.noop();
ftp.logout();
} /**
* @param ftp
* @param remoteFileName
* @param locaFileName
*/
private void upload(FTPClient ftp, String remoteFileName,
String locaFileName) throws Exception{
//上传
InputStream input; input = new FileInputStream(locaFileName); ftp.storeFile(remoteFileName, input); input.close();
} /**
* @param ftp
*/
private void connect(FTPClient ftp) throws Exception{
//连接服务器
ftp.connect( server, port);
int reply = ftp.getReplyCode();
//是否连接成功
if ( !FTPReply.isPositiveCompletion( reply ) ) {
throw new ConnectException( server+" 服务器拒绝连接" );
}
//登陆
if (!ftp.login(username, password)) {
throw new ConnectException( "用户名或密码错误" );
}
}
} FtpTest
package com.demo.ftp; /**
* @author wobendiankun 2015-1-8 下午08:34:36
*/
public class FtpTest { public static void main(String[] args) {
//上传文件
//upload();
//下载文件
//download();
//创建文件夹
mkdir();
} /**
*
*/
private static void mkdir() {
FtpClientUtil clientUtil=new FtpClientUtil();
clientUtil.mkdir("test");
} /**
*
*/
private static void download() {
String remoteFileName="./111.txt";
String locaFileName="F:\\test\\txt\\3333.txt";
FtpClientUtil clientUtil=new FtpClientUtil();
clientUtil.download(remoteFileName, locaFileName);
} /**
*
*/
private static void upload() {
String remoteFileName="./111.txt";
String locaFileName="F:\\test\\txt\\aaa.txt";
FtpClientUtil clientUtil=new FtpClientUtil();
clientUtil.upload(remoteFileName, locaFileName);
}
}

基于commons-net实现ftp创建文件夹、上传、下载功能的更多相关文章

  1. php文件夹上传下载控件分享

    用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个php文件夹上传下载的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助. 以下是实例的部分脚本文件 这里我先 ...

  2. Web 项目的文件/文件夹上传下载

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...

  3. Java Web 项目的文件/文件夹上传下载

    需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...

  4. B/S文件夹上传下载组件

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所 ...

  5. html5文件夹上传下载组件

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...

  6. js文件夹上传下载组件

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  7. java文件夹上传下载组件

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  8. vue 项目的文件/文件夹上传下载

    前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践. ...

  9. java文件夹上传下载控件分享

    用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个需要在JAVA.MyEclipse环境下大文件上传的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助. 以下 ...

  10. asp.net文件夹上传下载控件分享

    用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个需要在.net环境下大文件上传的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助. 以下是此例中各种脚本文件 ...

随机推荐

  1. 使用Recast.AI创建具有人工智能的聊天机器人

    很多SAP顾问朋友们对于人工智能/机器学习这个话题非常感兴趣,也在不断思考如何将这种新技术和SAP传统产品相结合.Jerry之前的微信公众号文章C4C和微信集成系列教程曾经介绍了Partner如何利用 ...

  2. mysqldump 使用详解

    基本的使用方法总结: 1 导出所有库 系统命令行 mysqldump -uusername -ppassword --all-databases > all.sql  2 导入所有库 mysql ...

  3. 运行外部exe

    bool CFileOperate::lauchCAD() { //启动ZWCAD CString OutputPath; STARTUPINFO si; //一些必备参数设置 memset(& ...

  4. 微信小程序---协同工作和发布

    (1)协同开发和发布 在中大型的公司里,人员的分工非常仔细,一般会有不同岗位角色的员工同时参与同一个小程序项目.为此,小程序平台设计了不同的权限管理使得项目管理者可以更加高效管理整个团队的协同工作. ...

  5. Mysql 访问远程数据库,报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost

    参考:http://www.cnblogs.com/xyzdw/archive/2011/08/11/2135227.html 解决方法: 1. 改表法. 可能是你的帐号不允许从远程登陆,只能在loc ...

  6. 执行BarTender

    1.配置.btw模板 1.1.左侧创建“具名数据源” 1.2.条码属性,选择刚才的数据源 1.3.保存 2.配置.btin服务 2.1.点击 工具/Integration Builder” 2.2.创 ...

  7. Abaqus用户子程序umat的学习

    Abaqus用户子程序umat的学习 说明:在文件中,!后面的内容为注释内容.本文为学习心得,很多注释是自己摸索得到.如有不正确的地方,敬请指正. ! ------------------------ ...

  8. 用户管理命令--passwd,usermod,userdel

    用户修改密码命令--passwd 当修改用户的密码时,也要分普通用户和超级用户两种情况 普通用户:修改密码前需要先输入当前密码,确认是否正确 密码设置不可以过于简单 超级用户:权利非常的大,可以设置任 ...

  9. 如何使用GoEasy实现PHP与Websocket实时通信

    最近搞了搞websocket 做了个简答的聊天demo 1.      从GoEasy获取appkey appkey是验证用户的有效性的唯一标识. Ø  注册账号. GoEasy官网:https:// ...

  10. 关于 vertical-align

    默认情况下(行内基线位置 = 行内元素最大高度): 如果对这个正方形使用 vertival-align:middle.在最大高度的元素上使用负值(middle = - 50% * 元素高度),可以提升 ...