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

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签