java 循环删除ftp_java连接FTP、删除、下载文件的方法

本文介绍了如何使用Java实现FTP客户端,包括连接FTP服务器、删除和下载服务器上的文件。示例代码展示了如何进行文件操作,并提供了创建目录、重命名文件等方法。
摘要由CSDN通过智能技术生成

本文共例举了二个连接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.

*/

/**

*@authorWiker Yong Email:

*@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

*/

/**

*@authorWiker Yong Email:

*@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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值