package com.ftp;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.StringTokenizer;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;
import com.ftp.thread.FTPThread;
import com.log.Log;
import com.sun.org.apache.bcel.internal.generic.NEW;
import com.util.PropetyUtil;
/**
* FTP客户端
*
* @author 王明进
* @version $Id: ClientFTP.java 2011-5-01 上午11:00:47 $
*/
public class ClientFTP {
// ----------------------------------------------------------------
// Instance data
// ----------------------------------------------------------------
/** logger */
protected final Logger log = Log.getLog(getClass());
private Properties pro = new PropetyUtil().getPro();
// 处理后的
private List<String> listAfter;
public ClientFTP(List<String> listAfter, List<String> recordeList , FTPClient ftpClient) {
super();
this.listAfter = listAfter;
this.ftpClient = ftpClient;
this.recordeList = recordeList;
}
public List<String> getListAfter() {
return listAfter;
}
private List<String> recordeList ;
public void setListAfter(List<String> listAfter) {
this.listAfter = listAfter;
}
public FTPClient getFtpClient() {
return ftpClient;
}
public void setFtpClient(FTPClient ftpClient) {
this.ftpClient = ftpClient;
}
public ClientFTP() {
super();
// TODO Auto-generated constructor stub
}
/*// 处理前的
private List<String> listBefor = new ArrayList<String>();*/
private FTPClient ftpClient = new FTPClient();
/* *//**
* 设置文件传输类型
*
* @throws Exception
* @throws IOException
*/
/*
* private void setFileType(FTPClient ftpClient) throws Exception { try { if
* (Boolean.parseBoolean(pro.getProperty("binaryTransfer"))) {
* ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); } else {
* ftpClient.setFileType(FTPClient.ASCII_FILE_TYPE); } } catch (IOException
* e) { throw new Exception("Could not to set file type.", e); } }
*/
/**
* 连接到ftp服务器
*
* @param ftpClient
* @return 连接成功返回true,否则返回false
* @throws Exception
*/
public boolean connect() {
return getFTPClient();
}
/*
* private Boolean connectServer() {
*
* try { ftpClient.connect(pro.getProperty("host"),
* Integer.parseInt(pro.getProperty("port")));
*
* ftpClient.setConnectTimeout(Integer.parseInt(pro
* .getProperty("clientTimeout")));
*
* // 连接后检测返回码来校验连接是否成功 int reply = ftpClient.getReplyCode();
*
* if (FTPReply.isPositiveCompletion(reply)) { // 登陆到ftp服务器 if
* (ftpClient.login(pro.getProperty("username"),
* pro.getProperty("password"))) { try { if
* (Boolean.parseBoolean(pro.getProperty("binaryTransfer"))) {
* ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); } else {
* ftpClient.setFileType(FTPClient.ASCII_FILE_TYPE); } } catch (IOException
* e) { log.debug("Could not to set file type.", e);
*
* return false; //throw new Exception("Could not to set file type.", e); }
* return true; } } else { return false; } } catch (IOException e) { if
* (ftpClient.isConnected()) { try { ftpClient.disconnect(); // 断开连接 } catch
* (IOException e1) { log.debug("Could not disconnectfrom server.", e1);
* return false; // throw new Exception("Could not disconnectfrom server.",
* // e1); } } }
*
* return false; }
*/
/**
* 返回一个FTPClient实例
*
* @throws Exception
*/
private boolean getFTPClient() {
// 构造一个FtpClient例
ftpClient.setControlEncoding(pro.getProperty("encoding")); // 设置字符集
// 连接ftp服务器
try {
ftpClient.connect(pro.getProperty("host"),
Integer.parseInt(pro.getProperty("port")));
ftpClient.setConnectTimeout(Integer.parseInt(pro
.getProperty("clientTimeout")));
// 连接后检测返回码来校验连接是否成功
int reply = ftpClient.getReplyCode();
if (FTPReply.isPositiveCompletion(reply)) {
// 登陆到ftp服务器
if (ftpClient.login(pro.getProperty("username"),
pro.getProperty("password"))) {
try {
if (Boolean.parseBoolean(pro
.getProperty("binaryTransfer"))) {
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
} else {
ftpClient.setFileType(FTPClient.ASCII_FILE_TYPE);
}
} catch (IOException e) {
log.debug("Could not to set file type.", e);
return false;
// throw new Exception("Could not to set file type.",
// e);
}
} else {
ftpClient.disconnect();
return false;
}
} else {
return false;
}
// 设置为passive模式
if (Boolean.parseBoolean(pro.getProperty("passiveMode"))) {
ftpClient.enterLocalPassiveMode();
}
// 设置文件传输类型
if (Boolean.parseBoolean(pro.getProperty("binaryTransfer"))) {
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
} else {
ftpClient.setFileType(FTPClient.ASCII_FILE_TYPE);
}
ftpClient.setSoTimeout(Integer.parseInt(pro
.getProperty("clientTimeout")));
} catch (SocketException e) {
log.debug("Set timeout error.", e);
return false;
} catch (IOException e1) {
log.debug("Could not connect server.", e1);
return false;
}
return true;
}
/**
* 断开ftp连接
*
* @throws Exception
*/
public void disconnect() throws Exception {
ftpClient.logout();
if (ftpClient.isConnected()) {
ftpClient.disconnect();
ftpClient = new FTPClient();
}
}
/**
* 在本地创建目录
*
* @throws Exception
*/
public boolean createDir(){
return mkdir(pro.getProperty("localAbsoluteile"));
}
private boolean mkdir(String localAbsoluteile) {
StringTokenizer st = new StringTokenizer(localAbsoluteile, "/");
String path1 = st.nextToken() + "/";
String path2 = path1;
while (st.hasMoreTokens()) {
try {
path1 = st.nextToken() + "/";
path2 += path1;
File inbox = new File(path2);
if (!inbox.exists())
inbox.mkdir();
} catch (Exception e) {
log.debug("创建目录失败", e);
return false;
// throw new Exception("创建目录失败", e);
}
}
return true;
}
/**
* 下载一个远程文件到指定的流 处理完后记得关闭流
*
* @param remoteAbsoluteFile
* @param output
* @return
* @throws Exception
*/
@SuppressWarnings("unused")
private void get(String remoteAbsoluteFile, OutputStream output)
throws Exception {
get(remoteAbsoluteFile, output, true);
}
/**
* 下载一个远程文件到指定的流 处理完后记得关闭流
*
* @param remoteAbsoluteFile
* @param output
* @param delFile
* @return
* @throws Exception
*/
private void get(String remoteAbsoluteFile, OutputStream output,
boolean autoClose) throws Exception {
try {
// 处理传输
ftpClient.retrieveFile(remoteAbsoluteFile, output);
//output.flush();
} catch (IOException e) {
log.debug("Couldn't get file from serve.", e);
disconnect();
}
}
/**
* 下载一个远程文件到本地的指定文件
*
* @param remoteAbsoluteFile
* 远程文件名(包括完整路径)
* @param localAbsoluteFile
* 本地文件名(包括完整路径)
* @param autoClose
* 是否自动关闭当前连接
*
* @return 成功时,返回true,失败返回false
* @throws Exception
*/
public boolean downFile() {
return get(pro.getProperty("remoteAbsoluteFile"),
pro.getProperty("localAbsoluteile"),
Boolean.parseBoolean(pro.getProperty("autoClose")),
pro.getProperty("extName"));
}
private boolean get(String remoteAbsoluteFile, String localAbsoluteile,
boolean autoClose, String extN
没有合适的资源?快使用搜索试试~ 我知道了~
Java多线程编程总结
共61个文件
java:12个
class:12个
doc:7个
5星 · 超过95%的资源 需积分: 9 85 下载量 46 浏览量
2011-05-02
23:38:48
上传
评论 2
收藏 1.27MB ZIP 举报
温馨提示
Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的调度-守护线程 Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 Java线程:并发协作-死锁 Java线程:volatile关键字 Java线程:新特征-线程池 Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-锁(下) Java线程:新特征-信号量 Java线程:新特征-阻塞队列 Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程:新特征-原子量 Java线程:新特征-障碍器 Java线程:大总结
资源推荐
资源详情
资源评论
收起资源包目录
tom.zip (61个子文件)
listenner简介.doc 145KB
opencsv
src
com
opencsv
OpenCsvDemo.java 2KB
Pojo.java 683B
CsvReader.java 5KB
.classpath 894B
build
classes
com
opencsv
Pojo.class 1KB
OpenCsvDemo.class 2KB
CsvReader.class 5KB
opencsv-1.6.jar 4KB
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.common.project.facet.core.xml 345B
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.component 451B
.jsdtscope 503B
org.eclipse.jdt.core.prefs 395B
WebContent
META-INF
MANIFEST.MF 39B
WEB-INF
lib
web.xml 631B
.project 1KB
opencsv-2.3-src-with-libs.tar.gz 274KB
新建 Microsoft Word 文档.doc 74KB
监听.doc 33KB
Java多线程编程总结.doc 759KB
calllog
src
com
read
TestFtp.java 2KB
ReadCSV.java 2KB
Pojo.java 1KB
ftp
thread
FTPThread.java 830B
FTPClients.java 5KB
clientftp.bak 12KB
ClientFTP.java 11KB
log
Log.java 258B
util
PropetyUtil.java 1KB
crd
CRDPojo.java 582B
resources
ftp.properties 590B
.classpath 1KB
build
classes
com
read
Pojo.class 2KB
TestFtp.class 1KB
ReadCSV.class 3KB
ftp
ClientFTP.class 8KB
thread
FTPThread.class 1KB
clientftp.bak 12KB
FTPClients.class 4KB
log
Log.class 544B
util
PropetyUtil.class 2KB
crd
CRDPojo.class 917B
ftp.properties 590B
commons-net-2.2.jar 207KB
log4j-1.2.16.jar 470KB
opencsv-1.6.jar 4KB
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.common.project.facet.core.xml 345B
org.eclipse.core.resources.prefs 104B
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.component 531B
.jsdtscope 503B
org.eclipse.jdt.core.prefs 395B
WebContent
META-INF
MANIFEST.MF 39B
WEB-INF
lib
web.xml 631B
.project 1KB
Java多线程同步Synchronized使用分析.doc 92KB
listenner配置.doc 182KB
liseten.doc 56KB
共 61 条
- 1
wmj
- 粉丝: 0
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页