基于commons-net实现ftp创建文件夹、上传、下载功能
原文: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创建文件夹、上传、下载功能的更多相关文章
- php文件夹上传下载控件分享
用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个php文件夹上传下载的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助. 以下是实例的部分脚本文件 这里我先 ...
- Web 项目的文件/文件夹上传下载
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...
- Java Web 项目的文件/文件夹上传下载
需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...
- B/S文件夹上传下载组件
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所 ...
- html5文件夹上传下载组件
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...
- js文件夹上传下载组件
核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...
- java文件夹上传下载组件
核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...
- vue 项目的文件/文件夹上传下载
前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践. ...
- java文件夹上传下载控件分享
用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个需要在JAVA.MyEclipse环境下大文件上传的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助. 以下 ...
- asp.net文件夹上传下载控件分享
用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个需要在.net环境下大文件上传的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助. 以下是此例中各种脚本文件 ...
随机推荐
- Java8函数式编程和lambda表达式
文章目录函数式编程JDK8接口新特性函数接口方法引用函数式编程函数式编程更多时候是一种编程的思维方式,是一种方法论.函数式与命令式编程区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉 ...
- 如何移除不再插入Windows设备的信息
Howto: Remove devices from Windows that are not connected to the system anymore 如何移除不再插入Windows设备的信息 ...
- 【jQuery】uploadify,实际开发案例【选择完文件点击上传才上传】
----------------------------------------------------------------------------------js部分:------------- ...
- JAVA用freemarker生成复杂Excel。(freemarker)
在生成Excel的时候,大多时候都是使用poi,jxl等进行的,但是对于复杂的Excel来说,这个工作量是非常的大的,而且,对于我这么懒的人来说,这是相当痛苦的一件事情,所以,我不得不找找有没有简单一 ...
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
转自:http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html HLS(HTTP Live Streaming)的分析: HTT ...
- 前端开发中的 meta 整理
meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言, ...
- 在docker中部署nginx
1端口映射 大写P 为容器暴漏的所有端口进行映射 -p ,--publish-all=true docker run -P -it centos /bin/bash 小写p 指定哪些容 ...
- windows文件备份到linux:windows定时任务+cwrsync+ssh免密码认证
一.安装cwrsync 二.创建密钥对,实现ssh免密码验证 linux服务器上 [root@zabbix ~]# ssh-keygen Generating public/private rsa k ...
- python基础知识11-文件操作
文件 装饰器,装饰函数或者类的方法. 1.文件的基本操作 打开文件: 注意绝对路径与相对路径. path = 'text.txt' path = r'/home/pyvip/py_case/text. ...
- day22 02 面向对象的交互
day22 02 面向对象的交互 一.三种编程方式 1.面向过程编程:核心是过程,流水线式思维 优点:极大降低了写程序的复杂程度,只需要顺着要执行的步骤,堆叠代码即可 缺点:一套流水线或者流程就用来解 ...