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

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法