本文共例举了二个连接FTP的方法,可以下载删除FTP上的文件,代码有点凌乱
JAVA自带的方法
importjava.io.BufferedInputStream;
importjava.io.DataInputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Properties;
importjava.util.StringTokenizer;
importorg.apache.commons.lang.StringUtils;
importorg.apache.log4j.Logger;
importsun.net.TelnetInputStream;
importsun.net.TelnetOutputStream;
importsun.net.ftp.FtpClient;
/*
* Copyright (C) 2011-2014 dshine.com
* All rights reserved.
*/
/**
*@date2014-8-19下午2:00:58
*@version1.0-SNAPSHOT
*/
publicclassJavaFtpClient{
privateStringip="";
privateStringusername="";
privateStringpassword="";
privateintport=-1;
privateStringpath="";
FtpClientftpClient=null;
OutputStreamos=null;
FileInputStreamis=null;
staticStringcurFolder=System.getProperty("user.dir");
privatefinalstaticLoggerlog=Logger.getLogger(JavaFtpClient.class);
// LogInfologinfo = new LogInfo();
publicJavaFtpClient(StringserverIP,Stringusername,Stringpassword){
this.ip=serverIP;
this.username=username;
this.password=password;
}
publicJavaFtpClient(StringserverIP,intport,Stringusername,Stringpassword){
this.ip=serverIP;
this.username=username;
this.password=password;
this.port=port;
}
publicvoidsetPath(Stringpath)
throwsIOException{
if(ftpClient==null){
this.path=path;
}else{
ftpClient.cd(path);
}
}
/**
*连接ftp服务器
*
*@throwsIOException
*/
publicbooleanconnectServer(){
if(ftpClient!=null){
returntrue;
}
ftpClient=newFtpClient();
try{
if(this.port!=-1){
ftpClient.openServer(this.ip,this.port);
}else{
ftpClient.openServer(this.ip);
}
ftpClient.login(this.username,this.password);
if(this.path.length()!=0){
ftpClient.cd(this.path);//
path是ftp服务下主目录的子目录
}
ftpClient.binary();//用2进制上传、下载
log.info("FTP已登录到\""+ftpClient.pwd()+"\"目录");
// loginfo.appendLog("FTP已登录到\"" + ftpClient.pwd() + "\"目录");
returntrue;
}catch(IOExceptione){
log.error(e.getMessage(),e);
returnfalse;
}
}
/**
*断开与ftp服务器连接
*
*@throwsIOException
*/
publicbooleancloseServer(){
try{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
if(ftpClient!=null){
ftpClient.closeServer();
}
log.info("已从服务器断开");
// loginfo.appendLog("已从服务器断开");
returntrue;
}catch(IOExceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*检查文件夹在当前目录下是否存在
*
*@paramdir
*@return
*/
publicbooleanisDirExist(Stringdir){
Stringpwd="";
try{
pwd=ftpClient.pwd();
ftpClient.cd(dir);
ftpClient.cd(pwd);
}catch(Exceptione){
returnfalse;
}
returntrue;
}
publicbooleanrename(Stringstr1,Stringstr2)
throwsIOException{
Stringfile1="";
Stringfile2="";
Stringfolder1="";
Stringfolder2="";
file1=str1.substring(str1.lastIndexOf("/")+1,str1.length());
file2=str2.substring(str2.lastIndexOf("/")+1,str2.length());
folder1=str1.substring(0,str1.lastIndexOf("/")+1);
folder2=str2.substring(0,str2.lastIndexOf("/")+1);
if(!isDirExist(folder2)){
createDir(folder2);
}
ftpClient.rename(str1,str2);
Listl=this.getFileList(folder2);
for(inti=0;i
if(l.get(i).toString().indexOf(file2)>0){
returntrue;
}
}
returnfalse;
}
publicvoidsendCMD(Stringcmd)
throwsIOException{
ftpClient.sendServer(cmd);
log.info(cmd.replaceAll("\r\n","\\\\r\\\\n"));
intreply=ftpClient.readServerResponse();
log.info("Server Response:"+reply);
// log.info(reply);
}
/**
*在当前目录下创建文件夹
*
*@paramdir
*@return
*@throwsException
*/
privatebooleancreateDir(Stringdir){
try{
ftpClient.ascii();
StringTokenizers=newStringTokenizer(dir,"/");//
sign
s.countTokens();
StringpathName="";//ftpClient.pwd();
while(s.hasMoreElements()){
pathName=pathName+"/"+(String)s.nextElement();
if(this.isDirExist(pathName)){
continue;
}
try{
ftpClient.sendServer("MKD
"+pathName+"\r\n");
}catch(Exceptione){
e=null;
returnfalse;
}
ftpClient.readServerResponse();
}
ftpClient.binary();
returntrue;
}catch(IOExceptione1){
e1.printStackTrace();
returnfalse;
}
}
/**
* ftp上传如果服务器段已存在名为filename的文件夹,该文件夹中与要上传的文件夹中同名的文件将被替换
*
*@paramfilename
*要上传的文件(或文件夹)名
*@return
*@throwsException
*/
publicbooleanupload(Stringfilename){
Stringnewname="";
if(filename.indexOf("/")>-1){
newname=filename.substring(filename.lastIndexOf("/")+1);
}else{
newname=filename;
}
returnupload(filename,newname);
}
/**
* ftp上传如果服务器段已存在名为newName的文件夹,该文件夹中与要上传的文件夹中同名的文件将被替换
*
*@paramfileName
*要上传的文件(或文件夹)名
*@paramnewName
*服务器段要生成的文件(或文件夹)名
*@return
*/
publicbooleanupload(StringfileName,StringnewName){
try{
Stringsavefilename=newString(fileName.getBytes("ISO-8859-1"),"GBK");
Filefile_in=newFile(savefilename);//打开本地待长传的文件
if(!file_in.exists()){
thrownewException("此文件或文件夹["+file_in.getName()+"]有误或不存在!");
}
if(file_in.isDirectory()){
upload(file_in.getPath(),newName,ftpClient.pwd());
}else{
uploadFile(file_in.getPath(),newName);
}
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
returntrue;
}catch(Exceptione){
e.printStackTrace();
System.err.println("Exception
ein Ftp upload(): "+e.toString());
returnfalse;
}finally{
try{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
}catch(IOExceptione){
e.printStackTrace();
}
}
}
/**
*真正用于上传的方法
*
*@paramfileName
*@paramnewName
*@parampath
*@throwsException
*/
privatevoidupload(StringfileName,StringnewName,Stringpath)
throwsException{
Stringsavefilename=newString(fileName.getBytes("ISO-8859-1"),"GBK");
Filefile_in=newFile(savefilename);//打开本地待长传的文件
if(!file_in.exists()){
thrownewException("此文件或文件夹["+file_in.getName()+"]有误或不存在!");
}
if(file_in.isDirectory()){
if(!isDirExist(newName)){
createDir(newName);
}
ftpClient.cd(newName);
FilesourceFile[]=file_in.listFiles();
for(inti=0;i
if(!sourceFile[i].exists()){
continue;
}
if(sourceFile[i].isDirectory()){
this.upload(sourceFile[i].getPath(),sourceFile[i].getName(),path+"/"
+newName);
}else{
this.uploadFile(sourceFile[i].getPath(),sourceFile[i].getName());
}
}
}else{
uploadFile(file_in.getPath(),newName);
}
ftpClient.cd(path);
}
/**
* upload上传文件
*
*@paramfilename
*要上传的文件名
*@paramnewname
*上传后的新文件名
*@return-1文件不存在>=0
成功上传,返回文件的大小
*@throwsException
*/
publiclonguploadFile(Stringfilename,Stringnewname)
throwsException{
longresult=0;
TelnetOutputStreamos=null;
FileInputStreamis=null;
try{
java.io.Filefile_in=newjava.io.File(filename);
if(!file_in.exists()){
return-1;
}
os=ftpClient.put(newname);
result=file_in.length();
is=newFileInputStream(file_in);
byte[]bytes=newbyte[1024];
intc;
while((c=is.read(bytes))!=-1){
os.write(bytes,0,c);
}
}finally{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
}
returnresult;
}
/**
*从ftp下载文件到本地
*
*@paramfilename
*服务器上的文件名
*@paramnewfilename
*本地生成的文件名
*@return
*@throwsException
*/
publiclongdownloadFile(Stringfilename,Stringnewfilename){
longresult=0;
TelnetInputStreamis=null;
FileOutputStreamos=null;
try{
is=ftpClient.get(filename);
java.io.Fileoutfile=newjava.io.File(newfilename);
log.info("Download File:"+outfile.getPath());
os=newFileOutputStream(outfile);
byte[]bytes=newbyte[1024];
intc;
while((c=is.read(bytes))!=-1){
os.write(bytes,0,c);
result=result+c;
}
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
}catch(IOExceptione){
e.printStackTrace();
}
}
returnresult;
}
/**
*取得相对于当前连接目录的某个目录下所有文件列表
*
*@parampath
*@return
*/
publicListgetFileList(Stringpath){
Listlist=newArrayList();
DataInputStreamdis;
try{
log.info(this.path+path);
dis=newDataInputStream(ftpClient.nameList(this.path+path));
Stringfilename="";
while((filename=dis.readLine())!=null){
Stringsfilename=newString(filename.getBytes("ISO-8859-1"),"utf-8");
list.add(sfilename);
}
}catch(IOExceptione){
e.printStackTrace();
}
returnlist;
}
publicstaticvoidmain(String[]args)
throwsIOException{
workPath=JavaFtpClient.class.getClass().getResource("/").getPath();
StringtempFolder=getPropertiesValueByKey(workPath+"/application.properties",
"download.path");
Filefile=newFile(tempFolder);
if(!file.exists()){
file.mkdir();
}
StringftpIp=getPropertiesValueByKey(workPath+"/application.properties","ftp.ip");
Stringport=getPropertiesValueByKey(workPath+"/application.properties","ftp.port");
Stringuser=getPropertiesValueByKey(workPath+"/application.properties","ftp.user");
Stringpassword=getPropertiesValueByKey(workPath+"/application.properties",
"ftp.password");
Stringsleep=getPropertiesValueByKey(workPath+"/application.properties","sleep.time");
sleep=StringUtils.defaultIfEmpty(sleep,"3600");
while(true){
JavaFtpClientftp=newJavaFtpClient(ftpIp,Integer.valueOf(port),user,password);
ftp.setPath("/");
ftp.connectServer();
// boolean result = ftp.upload("D:/4500000436.XML", "/sapinstall/MMIWM/4500000436.XML");
// log.info(result ? "上传成功!" : "上传失败!");
Listlist=ftp.getFileList("/");
for(inti=0;i
// String name = newString(list.get(i).toString().getBytes("UTF-8"), "iso-8859-1");
Stringname=list.get(i).toString();
// log.info(name);
if(!ftp.isDirExist(name)){
ftp.downloadFile(
name,
tempFolder+"\\"
+name.substring(name.lastIndexOf("/")+1,name.length()));
ftp.sendCMD("DELE "+name.substring(name.lastIndexOf("/")+1,name.length())
+"\r\n");
}
}
ftp.closeServer();
try{
log.info("休眠"+sleep
+"秒");
Thread.sleep(Integer.valueOf(sleep)*1000);
}catch(NumberFormatExceptione){
//TODOAuto-generated catch block
e.printStackTrace();
}catch(InterruptedExceptione){
//TODOAuto-generated catch block
e.printStackTrace();
}
}
/**
* FTP远程命令列表USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT PASS PASVSTOR
* REST CWD STAT RMD XCUP OPTS ACCTTYPE APPE RNFR XCWD HELP XRMD STOU
* AUTH REIN STRU SMNT RNTO LIST NOOPPWD SIZE PBSZ QUIT MODE SYST ABOR
* NLST MKD XPWD MDTM PROT
*在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上\r\n
* ftpclient.sendServer("XMKD/test/bb\r\n"); //执行服务器上的FTP命令
* ftpclient.readServerResponse一定要在sendServer后调用
* nameList("/test")获取指目录下的文件列表XMKD建立目录,当目录存在的情况下再次创建目录时报错XRMD删除目录
* DELE删除文件
*/
}
staticStringworkPath=null;
publicstaticStringgetPropertiesValueByKey(StringfileName,Stringkey){
Propertiesp=newProperties();
Stringvalue="";
try{
InputStreamin=newBufferedInputStream(newFileInputStream(fileName));
p.load(in);
value=p.getProperty(key);
}catch(Exceptione){
e.printStackTrace();
return"";
}
returnvalue;
}
}
Apache库的方法
需要依赖commons-net-3.1.jar库可以apache官方下载
importjava.io.BufferedInputStream;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.FileReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.sql.CallableStatement;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.Properties;
importjava.util.StringTokenizer;
importorg.apache.commons.lang.StringUtils;
importorg.apache.commons.net.ftp.FTP;
importorg.apache.commons.net.ftp.FTPClient;
importorg.apache.commons.net.ftp.FTPFile;
importorg.apache.log4j.Logger;
/*
* Copyright (C) 2011-2014 dshine.com
* All rights reserved.
* ShangHai Dshine -http://www.dshine.com
*/
/**
*@date2014-8-19下午2:00:58
*@version1.0-SNAPSHOT
*/
publicclassApacheFtpClient{
privateStringip="";
privateStringusername="";
privateStringpassword="";
privateintport=-1;
privateStringpath="";
FTPClientftpClient=null;
OutputStreamos=null;
FileInputStreamis=null;
staticStringcurFolder=System.getProperty("user.dir");
privatefinalstaticLoggerlog=Logger.getLogger(ApacheFtpClient.class);
// LogInfologinfo = new LogInfo();
publicApacheFtpClient(StringserverIP,Stringusername,Stringpassword){
this.ip=serverIP;
this.username=username;
this.password=password;
}
publicApacheFtpClient(StringserverIP,intport,Stringusername,Stringpassword){
this.ip=serverIP;
this.username=username;
this.password=password;
this.port=port;
}
publicvoidsetPath(Stringpath)
throwsIOException{
if(ftpClient==null){
this.path=path;
}else{
ftpClient.cwd(path);
}
}
/**
*连接ftp服务器
*
*@throwsIOException
*/
publicbooleanconnectServer(){
if(ftpClient!=null){
returntrue;
}
ftpClient=newFTPClient();
try{
if(this.port!=-1){
ftpClient.connect(this.ip,this.port);
}else{
ftpClient.connect(this.ip);
}
ftpClient.setControlEncoding("UTF-8");
ftpClient.login(this.username,this.password);
if(this.path.length()!=0){
ftpClient.cwd(this.path);//
path是ftp服务下主目录的子目录
}
//ftpClient.binary();//用2进制上传、下载
ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);
log.info("FTP已登录到\""+ftpClient.pwd()+"\"目录");
// loginfo.appendLog("FTP已登录到\"" + ftpClient.pwd() + "\"目录");
returntrue;
}catch(IOExceptione){
log.error(e.getMessage(),e);
returnfalse;
}
}
/**
*断开与ftp服务器连接
*
*@throwsIOException
*/
publicbooleancloseServer(){
try{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
if(ftpClient!=null){
ftpClient.disconnect();
}
log.info("已从服务器断开");
// loginfo.appendLog("已从服务器断开");
returntrue;
}catch(IOExceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*检查文件夹在当前目录下是否存在
*
*@paramdir
*@return
*/
publicbooleanisDirExist(Stringdir){
Stringpwd="";
try{
//pwd = ftpClient.pwd();
ftpClient.cwd(dir);
ftpClient.cwd(pwd);
}catch(Exceptione){
returnfalse;
}
returntrue;
}
// public boolean rename(String str1, Stringstr2)
// throws IOException {
// String file1 = "";
// String file2 = "";
// String folder1 = "";
// String folder2 = "";
// file1 =str1.substring(str1.lastIndexOf("/") + 1, str1.length());
// file2 =str2.substring(str2.lastIndexOf("/") + 1, str2.length());
// folder1 = str1.substring(0,str1.lastIndexOf("/") + 1);
// folder2 = str2.substring(0, str2.lastIndexOf("/")+ 1);
// if (!isDirExist(folder2)) {
// createDir(folder2);
// }
// ftpClient.rename(str1, str2);
// List l = this.getFileList(folder2);
// for (int i = 0; i < l.size();i++) {
// if(l.get(i).toString().indexOf(file2) > 0) {
// return true;
// }
// }
// return false;
// }
publicvoidsendCMD(Stringcmd)
throwsIOException{
ftpClient.sendCommand(cmd);
log.info(cmd.replaceAll("\r\n","\\\\r\\\\n"));
intreply=ftpClient.getReply();
log.info("Server Response:"+reply);
// log.info(reply);
}
/**
*在当前目录下创建文件夹
*
*@paramdir
*@return
*@throwsException
*/
privatebooleancreateDir(Stringdir){
try{
ftpClient.setFileTransferMode(FTP.ASCII_FILE_TYPE);
StringTokenizers=newStringTokenizer(dir,"/");//
sign
s.countTokens();
StringpathName="";//ftpClient.pwd();
while(s.hasMoreElements()){
pathName=pathName+"/"+(String)s.nextElement();
if(this.isDirExist(pathName)){
continue;
}
try{
ftpClient.sendCommand("MKD
"+pathName+"\r\n");
}catch(Exceptione){
e=null;
returnfalse;
}
ftpClient.getReply();
}
ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);
returntrue;
}catch(IOExceptione1){
e1.printStackTrace();
returnfalse;
}
}
/**
* ftp上传如果服务器段已存在名为filename的文件夹,该文件夹中与要上传的文件夹中同名的文件将被替换
*
*@paramfilename
*要上传的文件(或文件夹)名
*@return
*@throwsException
*/
/*publicboolean upload(String filename) {
String newname = "";
if (filename.indexOf("/")> -1) {
newname =filename.substring(filename.lastIndexOf("/") + 1);
} else {
newname = filename;
}
return upload(filename, newname);
}*/
/**
* ftp上传如果服务器段已存在名为newName的文件夹,该文件夹中与要上传的文件夹中同名的文件将被替换
*
*@paramfileName
*要上传的文件(或文件夹)名
*@paramnewName
*服务器段要生成的文件(或文件夹)名
*@return
*/
/*publicboolean upload(String fileName, String newName) {
try {
String savefilename = newString(fileName.getBytes("ISO-8859-1"), "GBK");
File file_in = new File(savefilename);//打开本地待长传的文件
if (!file_in.exists()) {
throw new Exception("此文件或文件夹[" + file_in.getName() + "]有误或不存在!");
}
if (file_in.isDirectory()) {
upload(file_in.getPath(),newName, ftpClient.pwd());
} else {
uploadFile(file_in.getPath(),newName);
}
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
return true;
} catch (Exception e) {
e.printStackTrace();
System.err.println("Exceptione in
Ftp upload(): " + e.toString());
return false;
} finally {
try {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}*/
/**
*真正用于上传的方法
*
*@paramfileName
*@paramnewName
*@parampath
*@throwsException
*/
/*privatevoid upload(String fileName, String newName, String path)
throws Exception {
String savefilename = newString(fileName.getBytes("ISO-8859-1"), "GBK");
File file_in = new File(savefilename);//打开本地待长传的文件
if (!file_in.exists()) {
throw new Exception("此文件或文件夹[" + file_in.getName() + "]有误或不存在!");
}
if (file_in.isDirectory()) {
if (!isDirExist(newName)) {
createDir(newName);
}
ftpClient.cwd(newName);
File sourceFile[] =file_in.listFiles();
for (int i = 0; i
if (!sourceFile[i].exists()) {
continue;
}
if(sourceFile[i].isDirectory()) {
this.upload(sourceFile[i].getPath(), sourceFile[i].getName(), path +"/"
+ newName);
} else {
this.uploadFile(sourceFile[i].getPath(), sourceFile[i].getName());
}
}
} else {
uploadFile(file_in.getPath(),newName);
}
ftpClient.cwd(path);
}*/
/**
* upload上传文件
*
*@paramfilename
*要上传的文件名
*@paramnewname
*上传后的新文件名
*@return-1文件不存在>=0
成功上传,返回文件的大小
*@throwsException
*/
/*publiclong uploadFile(String filename, String
newname)
throws Exception {
long result = 0;
TelnetOutputStream os = null;
FileInputStream is = null;
try {
java.io.File file_in = newjava.io.File(filename);
if (!file_in.exists()) {
return -1;
}
os = ftpClient.put(newname);
result = file_in.length();
is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1){
os.write(bytes, 0, c);
}
} finally {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
}
return result;
}*/
/**
*从ftp下载文件到本地
*
*@paramfilename
*服务器上的文件名
*@paramnewfilename
*本地生成的文件名
*@return
*@throwsException
*/
publicbooleandownloadFile(Stringfilename,Stringnewfilename){
longresult=0;
InputStreamis=null;
FileOutputStreamos=null;
try{
filename=newString(filename.getBytes("UTF-8"),"ISO-8859-1");
is=ftpClient.retrieveFileStream(filename);
java.io.Fileoutfile=newjava.io.File(newfilename);
if(!outfile.getParentFile().exists()){
outfile.getParentFile().mkdirs();
}
log.info("Download File:"+outfile.getPath());
os=newFileOutputStream(outfile);
byte[]bytes=newbyte[1024];
intc;
while((c=is.read(bytes))!=-1){
os.write(bytes,0,c);
result=result+c;
}
returnftpClient.completePendingCommand();
}catch(IOExceptione){
log.error(e.getMessage(),e);
}finally{
try{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
}catch(IOExceptione){
log.error(e.getMessage(),e);
}
}
returnfalse;
}
/**
*取得相对于当前连接目录的某个目录下所有文件列表
*
*@parampath
*@return
*/
/* publicList getFileList(String path) {
List list = new ArrayList();
DataInputStream dis;
try {
log.info(this.path + path);
dis = newDataInputStream(ftpClient.li.nameList(this.path + path));
String filename = "";
while ((filename = dis.readLine())!= null) {
String sfilename = newString(filename.getBytes("ISO-8859-1"), "utf-8");
list.add(sfilename);
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}*/
publicstaticvoidmain(String[]args)
throwsIOException{
workPath=ApacheFtpClient.class.getClass().getResource("/").getPath();
StringtempFolder=getPropertiesValueByKey(workPath+"/application.properties",
"download.path");
Filefile=newFile(tempFolder);
if(!file.exists()){
file.mkdir();
}
StringftpIp=getPropertiesValueByKey(workPath+"/application.properties","ftp.ip");
Stringport=getPropertiesValueByKey(workPath+"/application.properties","ftp.port");
Stringuser=getPropertiesValueByKey(workPath+"/application.properties","ftp.user");
Stringpassword=getPropertiesValueByKey(workPath+"/application.properties",
"ftp.password");
Stringsleep=getPropertiesValueByKey(workPath+"/application.properties","sleep.time");
sleep=StringUtils.defaultIfEmpty(sleep,"3600");
//String[] reqPathArr ={"/add/request","/all/request"};
StringaddReqPath="/add/request";
StringallReqPath="/all/request";
//readAllReq("D:\\temp\\add\\request\\SubscribeInfo000329522012082014060510824.req");
while(true){
{
ApacheFtpClientftp=newApacheFtpClient(ftpIp,Integer.valueOf(port),user,password);
ftp.setPath(addReqPath);
ftp.connectServer();
// boolean result = ftp.upload("D:/4500000436.XML", "/sapinstall/MMIWM/4500000436.XML");
// log.info(result ? "上传成功!" : "上传失败!");
FTPFile[]list=ftp.ftpClient.listFiles();
for(FTPFileftpfile:list){
if(ftpfile.isFile()){
StringlocalPath=tempFolder+addReqPath+"/"
+ftpfile.getName();
ftp.downloadFile(
ftpfile.getName(),localPath);
StringdelfileName=newString(ftpfile.getName().getBytes("UTF-8"),"ISO-8859-1");
log.info("DELEfile:"+addReqPath+"/"+ftpfile.getName());
readAddReq(localPath);
ftp.ftpClient.deleteFile(addReqPath+"/"+delfileName);
}
//log.info(ftpfile.getName());
}
ftp.closeServer();
}
{
ApacheFtpClientftp=newApacheFtpClient(ftpIp,Integer.valueOf(port),user,password);
ftp.setPath(allReqPath);
ftp.connectServer();
// boolean result = ftp.upload("D:/4500000436.XML", "/sapinstall/MMIWM/4500000436.XML");
// log.info(result ? "上传成功!" : "上传失败!");
FTPFile[]list=ftp.ftpClient.listFiles();
for(FTPFileftpfile:list){
if(ftpfile.isFile()){
StringlocalPath=tempFolder+addReqPath+"/"
+ftpfile.getName();
ftp.downloadFile(
ftpfile.getName(),localPath);
StringdelfileName=newString(ftpfile.getName().getBytes("UTF-8"),"ISO-8859-1");
log.info("DELEfile:"+allReqPath+"/"+ftpfile.getName());
readAllReq(localPath);
ftp.ftpClient.deleteFile(allReqPath+"/"+delfileName);
}
//log.info(ftpfile.getName());
}
ftp.closeServer();
}
try{
log.info("休眠"+sleep
+"秒");
Thread.sleep(Integer.valueOf(sleep)*1000);
}catch(NumberFormatExceptione){
log.error(e.getMessage(),e);
}catch(InterruptedExceptione){
log.error(e.getMessage(),e);
}
}
/**
* FTP远程命令列表USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT PASS PASVSTOR
* REST CWD STAT RMD XCUP OPTS ACCTTYPE APPE RNFR XCWD HELP XRMD STOU
* AUTH REIN STRU SMNT RNTO LIST NOOPPWD SIZE PBSZ QUIT MODE SYST ABOR
* NLST MKD XPWD MDTM PROT
*在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上\r\n
* ftpclient.sendServer("XMKD/test/bb\r\n"); //执行服务器上的FTP命令
* ftpclient.readServerResponse一定要在sendServer后调用
* nameList("/test")获取指目录下的文件列表XMKD建立目录,当目录存在的情况下再次创建目录时报错XRMD删除目录
* DELE删除文件
*/
}
publicstaticConnectiongetConnection(){
inttime=0;
Connectionconn=null;
do{
try{
Class.forName(getPropertiesValueByKey(workPath
+"/application.properties","className"));
conn=DriverManager.getConnection(
getPropertiesValueByKey(workPath
+"/application.properties","connUrl"),
getPropertiesValueByKey(workPath
+"/application.properties","userName"),
getPropertiesValueByKey(workPath
+"/application.properties","password"));
log.debug("数据库连接成功");
break;
}catch(Exceptione){
log.error("数据库连接失败",e);
time++;
try{
Thread.sleep(3000);
}catch(InterruptedExceptione1){
e1.printStackTrace();
}
}
}while(time<3);
returnconn;
}
publicstaticvoidreadAllReq(Stringpath){
log.info("Read all request file:"+path);
BufferedReaderreader=null;
Connectioncon=getConnection();//数据连接
try{
log.info("Read file:"+path);
Filefile=newFile(path);
reader=newBufferedReader(newFileReader(file));
intline=1;
StringtempString=null;
while((tempString=reader.readLine())!=null){
//System.out.println("line"+line+":"+tempString.split("\t").length);
String[]tempArr=tempString.split("\t");
if(tempArr.length!=15){
log.warn("Line length error!line "+line+":"+tempString);
continue;
}
String[]param=tempArr;
Stringsql="{call[test].[dbo].[test](?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
CallableStatementcall=con.prepareCall(sql);
call.setString(1,param[0]);
call.setString(2,param[1]);
call.setString(3,param[2]);
call.setString(4,param[3]);
call.setString(5,param[4]);
call.setString(6,param[5]);
call.setString(7,param[6]);
call.setString(8,param[7]);
call.setString(9,param[8]);
call.setString(10,param[9]);
call.setString(11,param[10]);
call.setString(12,param[11]);
call.setString(13,param[12]);
call.setString(14,param[13]);
call.setString(15,param[14]);
call.execute();
line++;
}
reader.close();
}catch(Exceptione){
log.error(e.getMessage(),e);
}finally{
if(reader!=null){
try{
reader.close();
}catch(IOExceptione1){
}
}
try{
if(con!=null)
con.close();
}catch(SQLExceptione){
}
}
}
publicstaticvoidreadAddReq(Stringpath){
BufferedReaderreader=null;
log.info("Read add request file:"+path);
Connectioncon=getConnection();//数据连接
try{
Filefile=newFile(path);
reader=newBufferedReader(newFileReader(file));
intline=1;
StringtempString=null;
while((tempString=reader.readLine())!=null){
//System.out.println("line"+line+":"+tempString.split("\t").length);
String[]tempArr=tempString.split("\t");
if(tempArr.length!=15){
log.warn("Line length error!line "+line+":"+tempString);
continue;
}
String[]param=tempArr;
Stringsql="{call[AndroidPlatform].[dbo].[pJTgdlt_ftp_add](?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
CallableStatementcall=con.prepareCall(sql);
call.setString(1,param[0]);
call.setString(2,param[1]);
call.setString(3,param[2]);
call.setString(4,param[3]);
call.setString(5,param[4]);
call.setString(6,param[5]);
call.setString(7,param[6]);
call.setString(8,param[7]);
call.setString(9,param[8]);
call.setString(10,param[9]);
call.setString(11,param[10]);
call.setString(12,param[11]);
call.setString(13,param[12]);
call.setString(14,param[13]);
call.setString(15,param[14]);
call.execute();
line++;
}
reader.close();
}catch(Exceptione){
log.error(e.getMessage(),e);
}finally{
if(reader!=null){
try{
reader.close();
}catch(IOExceptione1){
}
}
}
}
staticStringworkPath=null;
publicstaticStringgetPropertiesValueByKey(StringfileName,Stringkey){
Propertiesp=newProperties();
Stringvalue="";
try{
InputStreamin=newBufferedInputStream(newFileInputStream(fileName));
p.load(in);
value=p.getProperty(key);
}catch(Exceptione){
e.printStackTrace();
return"";
}
returnvalue;
}
}
原文:http://blog.csdn.net/wiker_yong/article/details/39118719