java 循环删除ftp_java连接FTP、删除、下载文件的方法-程序员宅基地

技术标签: java 循环删除ftp  

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35677144/article/details/115041273

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文