最近公司由于业务需要将公司生成文件上传至服务器,然后由银行下载;用BAT脚本完成了任务,但是赶脚java学了这么久也应该拿点东西出来,所以有了这款萝卜FTP工具,还没有完成,只完成了其中FTP功能部分,还想自己用swing写个界面,界面功能大致:定时执行任务,FTP集成上传下载。今天萝卜FTP工具部分代码贴出,还在完善中。。。
package org.yangxin;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FTPRadish {
private FTPClient ftpClient;
private int controlKeepAliveReplyTimeout = -1;//等待应答时间
private long keepAliveTimeout = -1;//等待发送,超时时间
private boolean hidden = false;//是否显示服务器隐藏文件
private String msg = "ok";
private FTPRadish() {}
private FTPRadish(FTPClient ftp) {
ftpClient = ftp;
}
static public FTPRadish me() {
FTPRadish radish = new FTPRadish(new FTPClient());
return radish;
}
public boolean connection(String server, int port) {
setMsg("");
if (keepAliveTimeout >= 0) {
ftpClient.setControlKeepAliveTimeout(keepAliveTimeout);
}
if (controlKeepAliveReplyTimeout >= 0) {
ftpClient.setControlKeepAliveReplyTimeout(controlKeepAliveReplyTimeout);
}
try {
ftpClient.connect(server, port);
if (isReplyV(ftpClient.getReplyCode())) {
setMsg("用户名或密码错误!");
disconnect();
return false;
}
// ftpClient.setListHiddenFiles(isHidden());
} catch (IOException e) {
disconnect();
setMsg("连接服务器:" + server + "的端口:" + port + "失败!");
return false;
}
return true;
}
public boolean login(String user, String pwd) {
setMsg("");
boolean ok = true;
try {
ok = ftpClient.login(user, pwd);
if (isReplyV(ftpClient.getReplyCode())) {
setMsg("用户名或密码错误!!");
disconnect();
return false;
}
} catch (IOException e) {
setMsg("登录失败!");
disconnect();
return false;
}
return ok;
}
public boolean upload(String locFile, String remoteFile) {
setMsg("");
ftpClient.enterLocalPassiveMode();
InputStream in = null;
try {
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
in = new FileInputStream(new File(locFile));
ftpClient.storeFile(remoteFile, in);
setMsg("上传" + locFile + "成功!");
} catch (IOException e) {
setMsg("上传" + locFile + "失败!");
return false;
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
}
}
}
return true;
}
public boolean isReplyV(int reply) {
return !FTPReply.isPositiveCompletion(reply);
}
public void disconnect() {
try {
if (ftpClient.isAvailable()) {
ftpClient.logout();
setMsg("已退出登录");
}
if (ftpClient.isConnected()) {
ftpClient.disconnect();
setMsg("已断开连接");
}
} catch (IOException e) {
}
}
public int getControlKeepAliveReplyTimeout() {
return controlKeepAliveReplyTimeout;
}
public void setControlKeepAliveReplyTimeout(int controlKeepAliveReplyTimeout) {
this.controlKeepAliveReplyTimeout = controlKeepAliveReplyTimeout;
}
public long getKeepAliveTimeout() {
return keepAliveTimeout;
}
public void setKeepAliveTimeout(long keepAliveTimeout) {
this.keepAliveTimeout = keepAliveTimeout;
}
public boolean isHidden() {
return hidden;
}
public void setHidden(boolean hidden) {
this.hidden = hidden;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}