原文: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. 深入理解Java的整型类型:如何实现2+2=5?

    先看下这段神奇的Java代码: public static void main(String[] args) throws Exception { doSomethingMagic(); System ...

  2. python基础一day3 字符串

    对字符串进行的任何操作都是形成新的字符串. 切片顾头不顾尾 倒着取: 因为顾头不顾尾,所以4要取到 当步长省略时,可以同时省略最后一个冒号 写0时,取不到,什么都不写,可以取到 倒着取出全部的值,两种 ...

  3. linux 安装nginx 集成emq

    1:下载nginx-1.12.2.tar.gz http://nginx.org/en/download.html 2:解压 tar -zxvf  nginx-1.12.2.tar.gz 3:进行co ...

  4. github 新建一个仓库后

    每次都记不住命令,记一下,防止找不到 echo "# learn18" >> README.md git init git add README.md git comm ...

  5. 一套出完被喷爆的noip提高组+的题目

    这是一个悲伤的故事. 校内胡测嘛,这当然的重视啦,好好地出完题,看题面不是很难哦,那就用它吧. 结果今天老师考试就用上了(情况不妙) 果然考试过程中就有打喷嚏的冲动. 一道暴力,一道概率DP,一道主席 ...

  6. 树莓派 Centos7 安装EPEL 7

    cat > /etc/yum.repos.d/epel.repo << EOF [epel] name=Epel rebuild for armhfp baseurl=https:/ ...

  7. 条款26:尽可能延后变量定义式的出现时间(Postpone variable definitions as long as possible)

    NOTE : 1.尽可能延后变量定义式的出现时间.这样做可增加程序的清晰度并改善程序效率.

  8. POJ 2485 Highways (求最小生成树中最大的边)

    Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public h ...

  9. Poj 2337 Catenyms(有向图DFS求欧拉通路)

    题意: 给定n个单词, 问是否存在一条欧拉通路(如acm,matal,lack), 如果存在, 输出字典序最小的一条. 分析: 这题可以看作http://www.cnblogs.com/Jadon97 ...

  10. 【C#】【数据结构】006-栈:链栈

    C#数据结构:链栈 1.自定义链栈结构: 链栈节点类 using System.Collections; using System.Collections.Generic; using UnityEn ...