edtftpj 2.0.1开源包扩展
2010年01月07日
package com.enterprisedt.net.ftp.ext;
import com.enterprisedt.net.ftp.FTPClient;
import com.enterprisedt.net.ftp.FTPException;
import com.enterprisedt.net.ftp.FTPFile;
import com.enterprisedt.net.ftp.FTPMessageCollector;
import com.enterprisedt.net.ftp.FTPTransferType;
import com.enterprisedt.net.ftp.FTPConnectMode;
import com.enterprisedt.util.debug.Level;
import com.enterprisedt.util.debug.Logger;
import com.enterprisedt.net.ftp.*;
import java.util.List;
import java.io.*;
import java.text.*;
/*
说明:
一、使用edtftpj 2.0.1开源包
二、实现了以下功能
1、上传指定文件夹(包括子文件和文件夹) uploadFolder(String folderName, String ftpPath)
2、下载FTP上指定的文件夹 downloadFolder(String ftppath, String outdir, String ftpdir)
3、上传指定文件夹下的所有文件到FTP指定目录下 uploadAllFilesInFolder(String folderName, String ftpPath)
4、删除指定文件夹下的所有文件(包括子文件夹里面的文件,但由于不知怎么删除目录,所以暂没有做删除目录的功能) deleteAllFilesInFolder(String ftppath, String ftpdir)
5、删除指定文件 String deleteFile(String ftpPath)
6、判断FTP上目录是否存在 isDirExist(String dirname, String[] files)
7、上传单个文件 uploadFile(String clientFileName, String ftpPath)
8、下载单个文件 downloadFile(String remoteFileName,String localFileName)
9、删除指定文件夹下的所有文件(不包括子文件夹,只是删除指定文件夹下的文件)
*/
public class FtpEptUtil {
private String ProxyServer;
private String ProxyPort;
private String ProxyUsername;
private String ProxyPassword;
private String ftpServer;
private String ftpPort;
private String ftpUserName;
private String ftpPassword;
private FTPClient ftpClient;
private boolean isLogin = false;
public FtpEptUtil(){
}
/**
* 初始化连接
* @param pFtpServer FTP服务器地址
* @param pFtpPort FTP服务器端口
* @param pFtpUserName FTP登录用户名
* @param pFtpPassword FTP登录密码
* @throws IOException
*/
public FtpEptUtil(String pFtpServer, String pFtpPort, String pFtpUserName,
String pFtpPassword) throws Exception {
this.ftpServer = pFtpServer;
if (pFtpPort.trim().equals(""))
this.ftpPort = "21";
else
this.ftpPort = pFtpPort;
if (pFtpUserName.trim().equals(""))
this.ftpUserName = "Anonymous";
else
this.ftpUserName = pFtpUserName;
this.ftpPassword = pFtpPassword;
try {
ftpClient = new FTPClient(); //ftpServer, Integer.parseInt(ftpPort)
ftpClient.setRemoteHost(ftpServer);
ftpClient.setRemotePort(Integer.parseInt(ftpPort));
ftpClient.setControlEncoding("gb2312"); //加上这一句后在 edtftpj 2.0.1 下就可以传中文文件名了
System.out.println("开始登录");
ftpClient.connect();
ftpClient.login(ftpUserName, ftpPassword);
System.out.println("登录成功");
ftpClient.chdir("\\"); //在有的ftp服务器运行会出错,用ftpClient.chdir("/")又可以了
System.out.println("已转入根目录");
isLogin = true;
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
/**
* 初始化连接
* @param ProxyServer 代理服务器地址
* @param ProxyPort 代理服务器端口
* @param ProxyUsername 代理服务器登录用户名
* @param ProxyPassword 代理服务器登录密码
* @param pFtpServer FTP服务器地址
* @param pFtpPort FTP服务器端口
* @param pFtpUserName FTP登录用户名
* @param pFtpPassword FTP登录密码
* @throws IOException
*/
public FtpEptUtil(String ProxyServer,String ProxyPort,String ProxyUsername,String ProxyPassword,String pFtpServer, String pFtpPort, String pFtpUserName,
String pFtpPassword) throws Exception {
if ((ProxyServer.trim().equals(""))||(ProxyServer==null))
this.ProxyPort = "1080";
else
this.ProxyPort = ProxyPort;
if ((ProxyUsername.trim().equals(""))||(ProxyUsername==null))
this.ProxyUsername = "Anonymous";
else
this.ProxyUsername = ProxyUsername;
if ((ProxyPassword.trim().equals(""))||(ProxyPassword==null))
this.ProxyPassword = "";
else
this.ProxyPassword = ProxyPassword;
if ((!ProxyServer.trim().equals(""))&&(ProxyServer!=null)){
FTPClient.clearSOCKS();
FTPClient.initSOCKS(ProxyPort,ProxyServer); //设置代理服务器
FTPClient.initSOCKSAuthentication(ProxyUsername, ProxyPassword);//如果代理服务器,需要密码则使用这一句
}
this.ftpServer = pFtpServer;
if (pFtpPort.trim().equals(""))
this.ftpPort = "21";
else
this.ftpPort = pFtpPort;
if (pFtpUserName.trim().equals(""))
this.ftpUserName = "Anonymous";
else
this.ftpUserName = pFtpUserName;
this.ftpPassword = pFtpPassword;
try {
ftpClient = new FTPClient(); //ftpServer, Integer.parseInt(ftpPort)
ftpClient.setRemoteHost(ftpServer);
ftpClient.setRemotePort(Integer.parseInt(ftpPort));
ftpClient.setControlEncoding("gbk"); //加上这一句后在 edtftpj 2.0.1 下就可以传中文文件名了
System.out.println("开始登录");
ftpClient.connect();
ftpClient.login(ftpUserName, ftpPassword);
System.out.println("登录成功");
ftpClient.chdir("\\"); //在有的ftp服务器运行会出错,用ftpClient.chdir("/")又可以了
System.out.println("已转入根目录");
isLogin = true;
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
/**
* 连接服务器
* @param pFtpServer FTP服务器地址
* @param pFtpPort FTP服务器端口
* @param pFtpUserName FTP登录用户名
* @param pFtpPassword FTP登录密码
* @throws IOException
*/
public void connServer(String pFtpServer, String pFtpPort,
String pFtpUserName, String pFtpPassword) throws
Exception {
this.ftpServer = pFtpServer;
if (pFtpPort.trim().equals("")) {
this.ftpPort = "21";
} else {
this.ftpPort = pFtpPort;
}
if (pFtpUserName.trim().equals("")) {
this.ftpUserName = "Anonymous";
} else {
this.ftpUserName = pFtpUserName;
}
this.ftpPassword = pFtpPassword;
try {
ftpClient = new FTPClient(); //ftpServer, Integer.parseInt(ftpPort)
ftpClient.setRemoteHost(ftpServer);
ftpClient.setRemotePort(Integer.parseInt(ftpPort));
ftpClient.setControlEncoding("gb2312"); //加上这一句后在 edtftpj 2.0.1 下就可以传中文文件名了
System.out.println("开始登录");
ftpClient.connect();
ftpClient.login(ftpUserName, ftpPassword);
System.out.println("登录成功");
ftpClient.chdir("\\"); //在有的ftp服务器运行会出错,用ftpClient.chdir("/")又可以了
System.out.println("已转入根目录");
isLogin = true;
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
/**
* 连接ftp服务器
* @param server 服务器地址
* @param path 文件夹,空代表根目录
* @param password 密码
* @param user 登陆用户
* @param ftppath 登录到的FTP目录,空代表根目录
*/
public void connServer(String server,int port,String user, String password,String ftppath) {
if(ftppath.trim().equals("")||(ftppath==null)){
ftppath = "\\";
}
try {
ftpClient = new FTPClient();
ftpClient.setRemoteHost(server);
ftpClient.setRemotePort(port);
ftpClient.setControlEncoding("gb2312"); //加上这一句后在 edtftpj 2.0.1 下就要可以传中文文件名了
System.out.println("开始登录");
ftpClient.connect();
ftpClient.login(user, password);
System.out.println("登录成功");
ftpClient.chdir(ftppath); //在有的ftp服务器运行会出错,用ftpClient.chdir("/")又可以了
System.out.println("已转入根目录");
isLogin = true;
} catch (FTPException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
/**
* 1、上传指定文件夹(以指定的文件夹开始,包括所有子文件和子文件夹)
* @param folderName 文件夹在本地址全路径(包括文件夹本身,如:C:\\temp\\)
* @param ftpPath 文件夹上传后在FTP服务器上的路径(应是形如:/wsq/yhp/的全路径)
* @throws IOException
*/
public String uploadFolder(String folderName, String ftpPath) throws
Exception {
if (isLogin) {
String strMsg = "";
try {
File file = new File(folderName);
if (file.isDirectory()) {
ftpClient.chdir("\\");
ftpClient.setType(FTPTransferType.BINARY);
if (checkFolderIsExist(ftpPath)) {
ftpClient.chdir(ftpPath);
} else {
createFolder(ftpPath);
}
if (!checkFolderIsExist(file.getName())) {
ftpClient.mkdir(file.getName());
}
ftpClient.chdir(file.getName());
ftpPath = ftpPath + "\\" + file.getName();
File[] files = file.listFiles();
for (int i = 0; i > error!Message:" + ee.getMessage() +
"\r\n";
}
}
}
}
if (!strMsg.equals("")) {
throw new Exception(strMsg);
}
} else {
System.out.println("file:" + file.getName());
throw new Exception(folderName + " is not a folder'name!");
}
} catch (Exception e) {
strMsg += e.getMessage() + "\r\n";
}
return strMsg;
} else {
throw new Exception("you didnot login remote ftp server!");
}
}
/**
* 5、删除指定文件 String deleteFile(String ftpPath)
* @param ftpPath FTP上对于根目录的路径
* @throws IOException
*/
public String deleteFile(String ftpPath) throws
Exception {
if (isLogin) {
String strMsg = "";
try {
ftpClient.delete(ftpPath);
} catch (FTPException ex) {
strMsg += "删除文件错误:" + ex.getMessage();
} catch (IOException ex) {
strMsg += "操作文件错误:" + ex.getMessage();
}
return strMsg;
} else {
throw new Exception("you didnot login remote ftp server!");
}
}
/**
* 4、删除指定目录(包括文件夹本身)deleteFolder(String ftpPath)
* @param ftpPath FTP上对于根目录的路径
* @throws IOException
*/
public String deleteFolder(String ftpPath) throws
Exception {
if (isLogin) {
String strMsg = "";
ftpClient.chdir("\\"); //进入目录
//列出目录下所有文件和文件夹
FTPFile[] ftpfiles = ftpClient.dirDetails(ftpPath);
for (int i = 0; i 上传指定文件夹下的所有文件到FTP指定目录下
* @param folderName 本地要上传的文件夹全路径
* @param ftpPath FTP上对于根目录的路径
* @throws IOException
*/
public void uploadAllFilesInFolder(String folderName, String ftpPath) throws
Exception {
if (isLogin) {
String strMsg = "";
try {
File file = new File(folderName);
if (file.isDirectory()) {
ftpClient.chdir("\\");
ftpClient.setType(FTPTransferType.BINARY);
if (checkFolderIsExist(ftpPath)) {
ftpClient.chdir(ftpPath);
} else {
createFolder(ftpPath);
}
File[] files = file.listFiles();
for (int i = 0; i > error!Message:" + ee.getMessage() +
"\r\n";
}
}
}
} else {
throw new Exception(folderName + " is not a folder'name!");
}
} catch (Exception e) {
throw new Exception(e.getMessage());
}
} else {
throw new Exception("you didnot login remote ftp server!");
}
}
/**
* 7、上传单个文件 uploadFile(String clientFileName, String ftpPath)
* @param clientFileName 本地要上传的文件的全路径
* @param ftpPath FTP上对于根目录的路径
* @throws IOException
*/
public void uploadFile(String clientFileName, String ftpPath) throws
Exception {
if (isLogin) {
try {
//获取文件名
String filename = "";
int index = clientFileName.lastIndexOf("\\");
filename = clientFileName.substring(index + 1);
ftpClient.chdir("\\");
ftpClient.setType(FTPTransferType.BINARY);
if (checkFolderIsExist(ftpPath)) {
ftpClient.chdir(ftpPath);
} else {
createFolder(ftpPath);
}
ftpClient.put(clientFileName, filename);
} catch (Exception ex) {
throw new Exception(ex.getMessage());
}
} else {
throw new Exception("you didnot login remote ftp server!");
}
}
/**
* 8、下载单个文件 downloadFile(String remoteFileName,String localFileName)
* @param remoteFileName --服务器上的文件名(含全路径)
* @param localFileName--本地文件名(全路径名)
*/
public void downloadFile(String remoteFileName,String localFileName){
try{
ftpClient.get(localFileName, remoteFileName);
}catch(Exception e){
e.printStackTrace();
}finally{
}
}
/**
* 检查FTP服务器上文件夹是否存在
* @param pFolder FTP上对于根目录的路径
* @throws Exception
*/
public boolean checkFolderIsExist(String pFolder) throws Exception {
if (isLogin) {
String folder = pFolder.trim();
if (folder.startsWith("\\")) {
folder = folder.substring(1);
}
if (folder.endsWith("\\")) {
folder = folder.substring(0, folder.length() - 1);
}
String strLayer = "..";
if (folder.indexOf("\\") > 0) {
String[] folders = folder.split("\\\\");
for (int i = 1; i ") > -1 &&
files.indexOf(dirname) > -1) {
return true;
}
}
return false;
}
/**
* 在FTP服务上建立目录
* @param directory FTP上对于根目录的路径
* @param subDirectory 要在FTP上建立的目录
*/
private static void createDirectory(String directory, String subDirectory) {
String dir[];
File fl = new File(directory);
try {
if (subDirectory == "" && fl.exists() != true) {
fl.mkdir();
} else if (subDirectory != "") {
dir = subDirectory.replace('\\', '/').split("/");
for (int i = 0; i 上传指定文件夹(以指定的文件夹开始,包括所有子文件和子文件夹)
// try {
// ftpeptutil.uploadFolder(
// "C:\\Documents and Settings\\Administrator\\桌面\\6\\200809.1",
// "\\");
// System.out.println("上传完毕!");
// } catch (Exception e) {
// e.printStackTrace();
// }
//2、下载FTP上指定的文件夹
// try {
// ftpeptutil.downloadFolder(
// "\\", //FTP服务器上的文件夹的父路径
// "D:\\temp\\", //下载到的本地目录
// "200809.1"); //要下载的FTP上的目录名(本地不创建此目录)
// System.out.println("下载完毕!");
// } catch (Exception e) {
// e.printStackTrace();
// }
//3、上传指定文件夹下的所有文件到FTP指定目录下
// try {
// ftpeptutil.uploadAllFilesInFolder(
// "C:\\Documents and Settings\\Administrator\\桌面\\6\\200809.1", //要上传的文件所在的目录
// "yhp"); //FTP上存放的目录(不存在则创建)
// //此示例是将200809.1下的所有文件上传到FTP服务器上的yhp目录下(不含子目录)
// System.out.println("上传完毕!");
// } catch (Exception e) {
// e.printStackTrace();
// }
//4、删除指定目录(包括文件夹本身)
// try {
// ftpeptutil.deleteFolder("\\", "200809.1"); //FTP上存放的目录(不存在则创建)
// //此示例是将200809.1下的所有文件上传到FTP服务器上的yhp目录下(不含子目录)
// System.out.println("上传完毕!");
// } catch (Exception e) {
// e.printStackTrace();
// }
//5、删除指定文件 String deleteFile(String ftpPath)
// try {
// ftpeptutil.deleteFile("\\20071009\\1.tif"); //FTP上存放的目录(不存在则创建)
// //此示例是将200809.1下的所有文件上传到FTP服务器上的yhp目录下(不含子目录)
// System.out.println("删除完毕!");
// } catch (Exception e) {
// e.printStackTrace();
// }
//6、判断FTP上目录是否存在 isDirExist(String dirname, String[] files)
// try {
// String[] files = null;
// ftpeptutil.isDirExist("\\20071009",files); //FTP上存放的目录(不存在则创建)
// //此示例是将200809.1下的所有文件上传到FTP服务器上的yhp目录下(不含子目录)
// System.out.println("完毕!");
// } catch (Exception e) {
// e.printStackTrace();
// }
//7、上传单个文件 uploadFile(String clientFileName, String ftpPath)
// try {
// ftpeptutil.uploadFile("C:\\Documents and Settings\\Administrator\\桌面\\6\\200809.1\\log4j使用手册和配置文件示例.rar","\\yhp\\log4j使用手册和配置文件示例.rar"); //FTP上存放的目录(不存在则创建)
// //此示例是将200809.1下的所有文件上传到FTP服务器上的yhp目录下(不含子目录)
// System.out.println("上传完毕!");
// } catch (Exception e) {
// e.printStackTrace();
// }
//8、下载单个文件 downloadFile(String remoteFileName,String localFileName)
// try {
// ftpeptutil.downloadFile("\\yhp\\image001.jpg","D:\\temp\\image001.jpg");
// System.out.println("下载完毕!");
// } catch (Exception e) {
// e.printStackTrace();
// }
//9、删除指定文件夹下的所有文件(不包括子文件夹,只是删除指定文件夹下的文件)
// try {
// ftpeptutil.deleteFilesInFolder("200809.1"); //FTP上存放的目录(不存在则创建)
// //此示例是将200809.1下的所有文件上传到FTP服务器上的yhp目录下(不含子目录)
// System.out.println("上传完毕!");
// } catch (Exception e) {
// e.printStackTrace();
// }
}
}
发表评论
-
Flex Ant编译模板
2012-01-20 01:16 781Flex Ant编译模板 2010年07月16日 Fl ... -
Flex mobile入门
2012-01-20 01:16 640Flex mobile入门 2010年12月 ... -
Flex编程学习基础
2012-01-20 01:16 646Flex编程学习基础 2010年11月08日 Flex是 ... -
flex RSL模式
2012-01-20 01:16 646flex RSL模式 2010年09月13 ... -
带一张阿拉旅游卡,随时出发
2012-01-19 09:05 1102带一张阿拉旅游卡,随时出发 2011年12月25日 旅游 ... -
内存绘图
2012-01-17 01:35 815内存绘图 2010年10月07日 经常出现图形闪烁的 ... -
使用Win32API实现Windows下异步串口通讯
2012-01-17 01:35 1048使用Win32API实现Windows下异步串口通讯 201 ... -
了解进程中的内存结构
2012-01-17 01:35 638了解进程中的内存结构 ... -
导入/导出 Excel 的基本方法 JAVA EXCEL API简介
2012-01-17 01:35 1112导入/导出 Excel 的基本 ... -
Crypto API 学习笔记
2012-01-17 01:35 853Crypto API 学习笔记 2011 ... -
识别ASP.NET配置文件Web.config
2012-01-15 20:21 514识别ASP.NET配置文件Web.config 2009年1 ... -
webconfig的配置方法
2012-01-15 20:21 808webconfig的配置方法 2010年03月13日 w ... -
用ASP连接各种数据库的方法
2012-01-15 20:21 1229用ASP连接各种数据库的方法 2011年04月22日 一 ... -
Servlet
2012-01-15 20:21 611Servlet 2010年02月21日 第五章 Ser ... -
sqlserver 批量添加和修改语句用select
2012-01-11 12:23 730sqlserver 批量添加和修改语句用select 201 ... -
阅读他人的源程序
2012-01-11 12:23 601阅读他人的源程序 2011年03月01日 阅读他人的程式 ... -
swfupload #2049 鬼一样的问题终于解决了
2012-01-11 12:23 948swfupload #2049 鬼一样的问题终于解决了 20 ... -
面向对象方法中的数据库设计
2012-01-11 12:23 691面向对象方法中的数据 ... -
相关推荐
2012-01-11 12:23 725相关推荐 2011年03月01日 经常在csdn上看到许 ...
相关推荐
/* 说明: 一、使用edtftpj 2.0.1开源包 二、实现了以下功能 1、上传指定文件夹(包括子文件和文件夹) 2、下载FTP上指定的文件夹 3、上传指定文件夹下的所有文件到FTP指定目录下 4、...
* 说明: 一、使用edtftpj 2.0.1开源包 二、实现了以下功能 1、上传指定文件夹(包括子文件和文件夹) 2、下载FTP上指定的文件夹 3、上传指定文件夹下的所有文件到FTP指定目录下 4、删除...
edtftpj-2.0.1.zip ftp的开源包
Rxjava2.1.6(2017.10.27) Rxandroid2.0.1(2016.11) jar包 Rxjava2.1.6(2017.10.27) Rxandroid2.0.1(2016.11) jar包
mongodb-async-driver-2.0.1 jar包
Sublime Text 最新版2.0.1 的汉化包,简体中文 将此包解压覆盖到\Sublime Text\Data\Packages目录底下即可。 解压缩用7zip或者最新的winrar。
html转图片功能,压缩包里 包含:html2image-0.9.jar 和 html2image-2.0.1.jar 两个 jar包 择其所需;
建设而银行龙支付接口SDK资料2.0.1生产包
Unity3d特效 粒子 插件 Particle Playground 2.0.1资源包
开放充电点协议(OCPP)是业界支持的充电之间通信的事实标准 充电站和充电站管理系统(CSMS),旨在适应任何类型的充电技术。 OCPP是一个开放的标准,没有成本或使用许可的障碍。这是OCPP 2.0版本的规范。
OCPP 2.0.1 基于 JSON, OCPP 2.0.1 下载 包含以下内容: 第 0 部分 简介 第 1 部分 架构和拓扑 第 2 部分 规范:用例和要求、消息、数据类型和引用的组件和变量 第 2 部分 附录:安全事件、标准化计量单位、组件和...
Sublime Text 2.0.1 附带注册机 中文包 内附注册机和中文包的使用方法 包含有32位和64位 安装版和便携版
crmeb java2.0.1最新完整包解压密码:123qwe 1. 优化pom文件中不全spring-boot-maven-plugin 因没有version节点导致idea提示错误 2. 添加完整的Crmeb-admin.jar和Cremb-front.jar启动和停止shell脚本 3. 修复文件...
jaxb-xjc-2.0.1.jar jaxb-xjc-2.0.1.jar
OCPP是开放充电桩协议,是充电桩和云端管理平台之间的通信协议。最新的2.0.1版本所有文件
内含html2image 0.9及2.0.1 jar包,现有的都太贵了,打击暴利!大家放心大胆的下。大家放心大胆的下。大家放心大胆的下。
赠送jar包:validation-api-2.0.1.Final.jar; 赠送原API文档:validation-api-2.0.1.Final-javadoc.jar; 赠送源代码:validation-api-2.0.1.Final-sources.jar; 赠送Maven依赖信息文件:validation-api-2.0.1....
Keil.STM32L0xx_DFP.2.0.1.pack补丁包,直接安装即可。
Commons IO是apache的一个开源的工具包,封装了IO操作的相关类,包含了最新的commons-io-2.0.1-bin,commons-io-2.0.1-src,commons-io-2.0.1-doc