技术标签: 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.
*/
/**
*@date2014-8-19下午2:00:58
*@version1.0-SNAPSHOT
*/
publicclassJavaFtpClient{
privateStringip="";
privateStringusername="";
privateStringpassword="";
privateintport=-1;
privateStringpath="";
FtpClientftpClient=null;
OutputStreamos=null;
FileInputStreamis=null;
staticStringcurFolder=System.getProperty("user.dir");
privatefinalstaticLoggerlog=Logger.getLogger(JavaFtpClient.class);
// LogInfologinfo = new LogInfo();
publicJavaFtpClient(StringserverIP,Stringusername,Stringpassword){
this.ip=serverIP;
this.username=username;
this.password=password;
}
publicJavaFtpClient(StringserverIP,intport,Stringusername,Stringpassword){
this.ip=serverIP;
this.username=username;
this.password=password;
this.port=port;
}
publicvoidsetPath(Stringpath)
throwsIOException{
if(ftpClient==null){
this.path=path;
}else{
ftpClient.cd(path);
}
}
/**
*连接ftp服务器
*
*@throwsIOException
*/
publicbooleanconnectServer(){
if(ftpClient!=null){
returntrue;
}
ftpClient=newFtpClient();
try{
if(this.port!=-1){
ftpClient.openServer(this.ip,this.port);
}else{
ftpClient.openServer(this.ip);
}
ftpClient.login(this.username,this.password);
if(this.path.length()!=0){
ftpClient.cd(this.path);//
path是ftp服务下主目录的子目录
}
ftpClient.binary();//用2进制上传、下载
log.info("FTP已登录到\""+ftpClient.pwd()+"\"目录");
// loginfo.appendLog("FTP已登录到\"" + ftpClient.pwd() + "\"目录");
returntrue;
}catch(IOExceptione){
log.error(e.getMessage(),e);
returnfalse;
}
}
/**
*断开与ftp服务器连接
*
*@throwsIOException
*/
publicbooleancloseServer(){
try{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
if(ftpClient!=null){
ftpClient.closeServer();
}
log.info("已从服务器断开");
// loginfo.appendLog("已从服务器断开");
returntrue;
}catch(IOExceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*检查文件夹在当前目录下是否存在
*
*@paramdir
*@return
*/
publicbooleanisDirExist(Stringdir){
Stringpwd="";
try{
pwd=ftpClient.pwd();
ftpClient.cd(dir);
ftpClient.cd(pwd);
}catch(Exceptione){
returnfalse;
}
returntrue;
}
publicbooleanrename(Stringstr1,Stringstr2)
throwsIOException{
Stringfile1="";
Stringfile2="";
Stringfolder1="";
Stringfolder2="";
file1=str1.substring(str1.lastIndexOf("/")+1,str1.length());
file2=str2.substring(str2.lastIndexOf("/")+1,str2.length());
folder1=str1.substring(0,str1.lastIndexOf("/")+1);
folder2=str2.substring(0,str2.lastIndexOf("/")+1);
if(!isDirExist(folder2)){
createDir(folder2);
}
ftpClient.rename(str1,str2);
Listl=this.getFileList(folder2);
for(inti=0;i
if(l.get(i).toString().indexOf(file2)>0){
returntrue;
}
}
returnfalse;
}
publicvoidsendCMD(Stringcmd)
throwsIOException{
ftpClient.sendServer(cmd);
log.info(cmd.replaceAll("\r\n","\\\\r\\\\n"));
intreply=ftpClient.readServerResponse();
log.info("Server Response:"+reply);
// log.info(reply);
}
/**
*在当前目录下创建文件夹
*
*@paramdir
*@return
*@throwsException
*/
privatebooleancreateDir(Stringdir){
try{
ftpClient.ascii();
StringTokenizers=newStringTokenizer(dir,"/");//
sign
s.countTokens();
StringpathName="";//ftpClient.pwd();
while(s.hasMoreElements()){
pathName=pathName+"/"+(String)s.nextElement();
if(this.isDirExist(pathName)){
continue;
}
try{
ftpClient.sendServer("MKD
"+pathName+"\r\n");
}catch(Exceptione){
e=null;
returnfalse;
}
ftpClient.readServerResponse();
}
ftpClient.binary();
returntrue;
}catch(IOExceptione1){
e1.printStackTrace();
returnfalse;
}
}
/**
* ftp上传如果服务器段已存在名为filename的文件夹,该文件夹中与要上传的文件夹中同名的文件将被替换
*
*@paramfilename
*要上传的文件(或文件夹)名
*@return
*@throwsException
*/
publicbooleanupload(Stringfilename){
Stringnewname="";
if(filename.indexOf("/")>-1){
newname=filename.substring(filename.lastIndexOf("/")+1);
}else{
newname=filename;
}
returnupload(filename,newname);
}
/**
* ftp上传如果服务器段已存在名为newName的文件夹,该文件夹中与要上传的文件夹中同名的文件将被替换
*
*@paramfileName
*要上传的文件(或文件夹)名
*@paramnewName
*服务器段要生成的文件(或文件夹)名
*@return
*/
publicbooleanupload(StringfileName,StringnewName){
try{
Stringsavefilename=newString(fileName.getBytes("ISO-8859-1"),"GBK");
Filefile_in=newFile(savefilename);//打开本地待长传的文件
if(!file_in.exists()){
thrownewException("此文件或文件夹["+file_in.getName()+"]有误或不存在!");
}
if(file_in.isDirectory()){
upload(file_in.getPath(),newName,ftpClient.pwd());
}else{
uploadFile(file_in.getPath(),newName);
}
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
returntrue;
}catch(Exceptione){
e.printStackTrace();
System.err.println("Exception
ein Ftp upload(): "+e.toString());
returnfalse;
}finally{
try{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
}catch(IOExceptione){
e.printStackTrace();
}
}
}
/**
*真正用于上传的方法
*
*@paramfileName
*@paramnewName
*@parampath
*@throwsException
*/
privatevoidupload(StringfileName,StringnewName,Stringpath)
throwsException{
Stringsavefilename=newString(fileName.getBytes("ISO-8859-1"),"GBK");
Filefile_in=newFile(savefilename);//打开本地待长传的文件
if(!file_in.exists()){
thrownewException("此文件或文件夹["+file_in.getName()+"]有误或不存在!");
}
if(file_in.isDirectory()){
if(!isDirExist(newName)){
createDir(newName);
}
ftpClient.cd(newName);
FilesourceFile[]=file_in.listFiles();
for(inti=0;i
if(!sourceFile[i].exists()){
continue;
}
if(sourceFile[i].isDirectory()){
this.upload(sourceFile[i].getPath(),sourceFile[i].getName(),path+"/"
+newName);
}else{
this.uploadFile(sourceFile[i].getPath(),sourceFile[i].getName());
}
}
}else{
uploadFile(file_in.getPath(),newName);
}
ftpClient.cd(path);
}
/**
* upload上传文件
*
*@paramfilename
*要上传的文件名
*@paramnewname
*上传后的新文件名
*@return-1文件不存在>=0
成功上传,返回文件的大小
*@throwsException
*/
publiclonguploadFile(Stringfilename,Stringnewname)
throwsException{
longresult=0;
TelnetOutputStreamos=null;
FileInputStreamis=null;
try{
java.io.Filefile_in=newjava.io.File(filename);
if(!file_in.exists()){
return-1;
}
os=ftpClient.put(newname);
result=file_in.length();
is=newFileInputStream(file_in);
byte[]bytes=newbyte[1024];
intc;
while((c=is.read(bytes))!=-1){
os.write(bytes,0,c);
}
}finally{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
}
returnresult;
}
/**
*从ftp下载文件到本地
*
*@paramfilename
*服务器上的文件名
*@paramnewfilename
*本地生成的文件名
*@return
*@throwsException
*/
publiclongdownloadFile(Stringfilename,Stringnewfilename){
longresult=0;
TelnetInputStreamis=null;
FileOutputStreamos=null;
try{
is=ftpClient.get(filename);
java.io.Fileoutfile=newjava.io.File(newfilename);
log.info("Download File:"+outfile.getPath());
os=newFileOutputStream(outfile);
byte[]bytes=newbyte[1024];
intc;
while((c=is.read(bytes))!=-1){
os.write(bytes,0,c);
result=result+c;
}
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
}catch(IOExceptione){
e.printStackTrace();
}
}
returnresult;
}
/**
*取得相对于当前连接目录的某个目录下所有文件列表
*
*@parampath
*@return
*/
publicListgetFileList(Stringpath){
Listlist=newArrayList();
DataInputStreamdis;
try{
log.info(this.path+path);
dis=newDataInputStream(ftpClient.nameList(this.path+path));
Stringfilename="";
while((filename=dis.readLine())!=null){
Stringsfilename=newString(filename.getBytes("ISO-8859-1"),"utf-8");
list.add(sfilename);
}
}catch(IOExceptione){
e.printStackTrace();
}
returnlist;
}
publicstaticvoidmain(String[]args)
throwsIOException{
workPath=JavaFtpClient.class.getClass().getResource("/").getPath();
StringtempFolder=getPropertiesValueByKey(workPath+"/application.properties",
"download.path");
Filefile=newFile(tempFolder);
if(!file.exists()){
file.mkdir();
}
StringftpIp=getPropertiesValueByKey(workPath+"/application.properties","ftp.ip");
Stringport=getPropertiesValueByKey(workPath+"/application.properties","ftp.port");
Stringuser=getPropertiesValueByKey(workPath+"/application.properties","ftp.user");
Stringpassword=getPropertiesValueByKey(workPath+"/application.properties",
"ftp.password");
Stringsleep=getPropertiesValueByKey(workPath+"/application.properties","sleep.time");
sleep=StringUtils.defaultIfEmpty(sleep,"3600");
while(true){
JavaFtpClientftp=newJavaFtpClient(ftpIp,Integer.valueOf(port),user,password);
ftp.setPath("/");
ftp.connectServer();
// boolean result = ftp.upload("D:/4500000436.XML", "/sapinstall/MMIWM/4500000436.XML");
// log.info(result ? "上传成功!" : "上传失败!");
Listlist=ftp.getFileList("/");
for(inti=0;i
// String name = newString(list.get(i).toString().getBytes("UTF-8"), "iso-8859-1");
Stringname=list.get(i).toString();
// log.info(name);
if(!ftp.isDirExist(name)){
ftp.downloadFile(
name,
tempFolder+"\\"
+name.substring(name.lastIndexOf("/")+1,name.length()));
ftp.sendCMD("DELE "+name.substring(name.lastIndexOf("/")+1,name.length())
+"\r\n");
}
}
ftp.closeServer();
try{
log.info("休眠"+sleep
+"秒");
Thread.sleep(Integer.valueOf(sleep)*1000);
}catch(NumberFormatExceptione){
//TODOAuto-generated catch block
e.printStackTrace();
}catch(InterruptedExceptione){
//TODOAuto-generated catch block
e.printStackTrace();
}
}
/**
* FTP远程命令列表USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT PASS PASVSTOR
* REST CWD STAT RMD XCUP OPTS ACCTTYPE APPE RNFR XCWD HELP XRMD STOU
* AUTH REIN STRU SMNT RNTO LIST NOOPPWD SIZE PBSZ QUIT MODE SYST ABOR
* NLST MKD XPWD MDTM PROT
*在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上\r\n
* ftpclient.sendServer("XMKD/test/bb\r\n"); //执行服务器上的FTP命令
* ftpclient.readServerResponse一定要在sendServer后调用
* nameList("/test")获取指目录下的文件列表XMKD建立目录,当目录存在的情况下再次创建目录时报错XRMD删除目录
* DELE删除文件
*/
}
staticStringworkPath=null;
publicstaticStringgetPropertiesValueByKey(StringfileName,Stringkey){
Propertiesp=newProperties();
Stringvalue="";
try{
InputStreamin=newBufferedInputStream(newFileInputStream(fileName));
p.load(in);
value=p.getProperty(key);
}catch(Exceptione){
e.printStackTrace();
return"";
}
returnvalue;
}
}
Apache库的方法
需要依赖commons-net-3.1.jar库可以apache官方下载
importjava.io.BufferedInputStream;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.FileReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.sql.CallableStatement;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.Properties;
importjava.util.StringTokenizer;
importorg.apache.commons.lang.StringUtils;
importorg.apache.commons.net.ftp.FTP;
importorg.apache.commons.net.ftp.FTPClient;
importorg.apache.commons.net.ftp.FTPFile;
importorg.apache.log4j.Logger;
/*
* Copyright (C) 2011-2014 dshine.com
* All rights reserved.
* ShangHai Dshine -http://www.dshine.com
*/
/**
*@date2014-8-19下午2:00:58
*@version1.0-SNAPSHOT
*/
publicclassApacheFtpClient{
privateStringip="";
privateStringusername="";
privateStringpassword="";
privateintport=-1;
privateStringpath="";
FTPClientftpClient=null;
OutputStreamos=null;
FileInputStreamis=null;
staticStringcurFolder=System.getProperty("user.dir");
privatefinalstaticLoggerlog=Logger.getLogger(ApacheFtpClient.class);
// LogInfologinfo = new LogInfo();
publicApacheFtpClient(StringserverIP,Stringusername,Stringpassword){
this.ip=serverIP;
this.username=username;
this.password=password;
}
publicApacheFtpClient(StringserverIP,intport,Stringusername,Stringpassword){
this.ip=serverIP;
this.username=username;
this.password=password;
this.port=port;
}
publicvoidsetPath(Stringpath)
throwsIOException{
if(ftpClient==null){
this.path=path;
}else{
ftpClient.cwd(path);
}
}
/**
*连接ftp服务器
*
*@throwsIOException
*/
publicbooleanconnectServer(){
if(ftpClient!=null){
returntrue;
}
ftpClient=newFTPClient();
try{
if(this.port!=-1){
ftpClient.connect(this.ip,this.port);
}else{
ftpClient.connect(this.ip);
}
ftpClient.setControlEncoding("UTF-8");
ftpClient.login(this.username,this.password);
if(this.path.length()!=0){
ftpClient.cwd(this.path);//
path是ftp服务下主目录的子目录
}
//ftpClient.binary();//用2进制上传、下载
ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);
log.info("FTP已登录到\""+ftpClient.pwd()+"\"目录");
// loginfo.appendLog("FTP已登录到\"" + ftpClient.pwd() + "\"目录");
returntrue;
}catch(IOExceptione){
log.error(e.getMessage(),e);
returnfalse;
}
}
/**
*断开与ftp服务器连接
*
*@throwsIOException
*/
publicbooleancloseServer(){
try{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
if(ftpClient!=null){
ftpClient.disconnect();
}
log.info("已从服务器断开");
// loginfo.appendLog("已从服务器断开");
returntrue;
}catch(IOExceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*检查文件夹在当前目录下是否存在
*
*@paramdir
*@return
*/
publicbooleanisDirExist(Stringdir){
Stringpwd="";
try{
//pwd = ftpClient.pwd();
ftpClient.cwd(dir);
ftpClient.cwd(pwd);
}catch(Exceptione){
returnfalse;
}
returntrue;
}
// public boolean rename(String str1, Stringstr2)
// throws IOException {
// String file1 = "";
// String file2 = "";
// String folder1 = "";
// String folder2 = "";
// file1 =str1.substring(str1.lastIndexOf("/") + 1, str1.length());
// file2 =str2.substring(str2.lastIndexOf("/") + 1, str2.length());
// folder1 = str1.substring(0,str1.lastIndexOf("/") + 1);
// folder2 = str2.substring(0, str2.lastIndexOf("/")+ 1);
// if (!isDirExist(folder2)) {
// createDir(folder2);
// }
// ftpClient.rename(str1, str2);
// List l = this.getFileList(folder2);
// for (int i = 0; i < l.size();i++) {
// if(l.get(i).toString().indexOf(file2) > 0) {
// return true;
// }
// }
// return false;
// }
publicvoidsendCMD(Stringcmd)
throwsIOException{
ftpClient.sendCommand(cmd);
log.info(cmd.replaceAll("\r\n","\\\\r\\\\n"));
intreply=ftpClient.getReply();
log.info("Server Response:"+reply);
// log.info(reply);
}
/**
*在当前目录下创建文件夹
*
*@paramdir
*@return
*@throwsException
*/
privatebooleancreateDir(Stringdir){
try{
ftpClient.setFileTransferMode(FTP.ASCII_FILE_TYPE);
StringTokenizers=newStringTokenizer(dir,"/");//
sign
s.countTokens();
StringpathName="";//ftpClient.pwd();
while(s.hasMoreElements()){
pathName=pathName+"/"+(String)s.nextElement();
if(this.isDirExist(pathName)){
continue;
}
try{
ftpClient.sendCommand("MKD
"+pathName+"\r\n");
}catch(Exceptione){
e=null;
returnfalse;
}
ftpClient.getReply();
}
ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);
returntrue;
}catch(IOExceptione1){
e1.printStackTrace();
returnfalse;
}
}
/**
* ftp上传如果服务器段已存在名为filename的文件夹,该文件夹中与要上传的文件夹中同名的文件将被替换
*
*@paramfilename
*要上传的文件(或文件夹)名
*@return
*@throwsException
*/
/*publicboolean upload(String filename) {
String newname = "";
if (filename.indexOf("/")> -1) {
newname =filename.substring(filename.lastIndexOf("/") + 1);
} else {
newname = filename;
}
return upload(filename, newname);
}*/
/**
* ftp上传如果服务器段已存在名为newName的文件夹,该文件夹中与要上传的文件夹中同名的文件将被替换
*
*@paramfileName
*要上传的文件(或文件夹)名
*@paramnewName
*服务器段要生成的文件(或文件夹)名
*@return
*/
/*publicboolean upload(String fileName, String newName) {
try {
String savefilename = newString(fileName.getBytes("ISO-8859-1"), "GBK");
File file_in = new File(savefilename);//打开本地待长传的文件
if (!file_in.exists()) {
throw new Exception("此文件或文件夹[" + file_in.getName() + "]有误或不存在!");
}
if (file_in.isDirectory()) {
upload(file_in.getPath(),newName, ftpClient.pwd());
} else {
uploadFile(file_in.getPath(),newName);
}
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
return true;
} catch (Exception e) {
e.printStackTrace();
System.err.println("Exceptione in
Ftp upload(): " + e.toString());
return false;
} finally {
try {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}*/
/**
*真正用于上传的方法
*
*@paramfileName
*@paramnewName
*@parampath
*@throwsException
*/
/*privatevoid upload(String fileName, String newName, String path)
throws Exception {
String savefilename = newString(fileName.getBytes("ISO-8859-1"), "GBK");
File file_in = new File(savefilename);//打开本地待长传的文件
if (!file_in.exists()) {
throw new Exception("此文件或文件夹[" + file_in.getName() + "]有误或不存在!");
}
if (file_in.isDirectory()) {
if (!isDirExist(newName)) {
createDir(newName);
}
ftpClient.cwd(newName);
File sourceFile[] =file_in.listFiles();
for (int i = 0; i
if (!sourceFile[i].exists()) {
continue;
}
if(sourceFile[i].isDirectory()) {
this.upload(sourceFile[i].getPath(), sourceFile[i].getName(), path +"/"
+ newName);
} else {
this.uploadFile(sourceFile[i].getPath(), sourceFile[i].getName());
}
}
} else {
uploadFile(file_in.getPath(),newName);
}
ftpClient.cwd(path);
}*/
/**
* upload上传文件
*
*@paramfilename
*要上传的文件名
*@paramnewname
*上传后的新文件名
*@return-1文件不存在>=0
成功上传,返回文件的大小
*@throwsException
*/
/*publiclong uploadFile(String filename, String
newname)
throws Exception {
long result = 0;
TelnetOutputStream os = null;
FileInputStream is = null;
try {
java.io.File file_in = newjava.io.File(filename);
if (!file_in.exists()) {
return -1;
}
os = ftpClient.put(newname);
result = file_in.length();
is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1){
os.write(bytes, 0, c);
}
} finally {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
}
return result;
}*/
/**
*从ftp下载文件到本地
*
*@paramfilename
*服务器上的文件名
*@paramnewfilename
*本地生成的文件名
*@return
*@throwsException
*/
publicbooleandownloadFile(Stringfilename,Stringnewfilename){
longresult=0;
InputStreamis=null;
FileOutputStreamos=null;
try{
filename=newString(filename.getBytes("UTF-8"),"ISO-8859-1");
is=ftpClient.retrieveFileStream(filename);
java.io.Fileoutfile=newjava.io.File(newfilename);
if(!outfile.getParentFile().exists()){
outfile.getParentFile().mkdirs();
}
log.info("Download File:"+outfile.getPath());
os=newFileOutputStream(outfile);
byte[]bytes=newbyte[1024];
intc;
while((c=is.read(bytes))!=-1){
os.write(bytes,0,c);
result=result+c;
}
returnftpClient.completePendingCommand();
}catch(IOExceptione){
log.error(e.getMessage(),e);
}finally{
try{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
}catch(IOExceptione){
log.error(e.getMessage(),e);
}
}
returnfalse;
}
/**
*取得相对于当前连接目录的某个目录下所有文件列表
*
*@parampath
*@return
*/
/* publicList getFileList(String path) {
List list = new ArrayList();
DataInputStream dis;
try {
log.info(this.path + path);
dis = newDataInputStream(ftpClient.li.nameList(this.path + path));
String filename = "";
while ((filename = dis.readLine())!= null) {
String sfilename = newString(filename.getBytes("ISO-8859-1"), "utf-8");
list.add(sfilename);
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}*/
publicstaticvoidmain(String[]args)
throwsIOException{
workPath=ApacheFtpClient.class.getClass().getResource("/").getPath();
StringtempFolder=getPropertiesValueByKey(workPath+"/application.properties",
"download.path");
Filefile=newFile(tempFolder);
if(!file.exists()){
file.mkdir();
}
StringftpIp=getPropertiesValueByKey(workPath+"/application.properties","ftp.ip");
Stringport=getPropertiesValueByKey(workPath+"/application.properties","ftp.port");
Stringuser=getPropertiesValueByKey(workPath+"/application.properties","ftp.user");
Stringpassword=getPropertiesValueByKey(workPath+"/application.properties",
"ftp.password");
Stringsleep=getPropertiesValueByKey(workPath+"/application.properties","sleep.time");
sleep=StringUtils.defaultIfEmpty(sleep,"3600");
//String[] reqPathArr ={"/add/request","/all/request"};
StringaddReqPath="/add/request";
StringallReqPath="/all/request";
//readAllReq("D:\\temp\\add\\request\\SubscribeInfo000329522012082014060510824.req");
while(true){
{
ApacheFtpClientftp=newApacheFtpClient(ftpIp,Integer.valueOf(port),user,password);
ftp.setPath(addReqPath);
ftp.connectServer();
// boolean result = ftp.upload("D:/4500000436.XML", "/sapinstall/MMIWM/4500000436.XML");
// log.info(result ? "上传成功!" : "上传失败!");
FTPFile[]list=ftp.ftpClient.listFiles();
for(FTPFileftpfile:list){
if(ftpfile.isFile()){
StringlocalPath=tempFolder+addReqPath+"/"
+ftpfile.getName();
ftp.downloadFile(
ftpfile.getName(),localPath);
StringdelfileName=newString(ftpfile.getName().getBytes("UTF-8"),"ISO-8859-1");
log.info("DELEfile:"+addReqPath+"/"+ftpfile.getName());
readAddReq(localPath);
ftp.ftpClient.deleteFile(addReqPath+"/"+delfileName);
}
//log.info(ftpfile.getName());
}
ftp.closeServer();
}
{
ApacheFtpClientftp=newApacheFtpClient(ftpIp,Integer.valueOf(port),user,password);
ftp.setPath(allReqPath);
ftp.connectServer();
// boolean result = ftp.upload("D:/4500000436.XML", "/sapinstall/MMIWM/4500000436.XML");
// log.info(result ? "上传成功!" : "上传失败!");
FTPFile[]list=ftp.ftpClient.listFiles();
for(FTPFileftpfile:list){
if(ftpfile.isFile()){
StringlocalPath=tempFolder+addReqPath+"/"
+ftpfile.getName();
ftp.downloadFile(
ftpfile.getName(),localPath);
StringdelfileName=newString(ftpfile.getName().getBytes("UTF-8"),"ISO-8859-1");
log.info("DELEfile:"+allReqPath+"/"+ftpfile.getName());
readAllReq(localPath);
ftp.ftpClient.deleteFile(allReqPath+"/"+delfileName);
}
//log.info(ftpfile.getName());
}
ftp.closeServer();
}
try{
log.info("休眠"+sleep
+"秒");
Thread.sleep(Integer.valueOf(sleep)*1000);
}catch(NumberFormatExceptione){
log.error(e.getMessage(),e);
}catch(InterruptedExceptione){
log.error(e.getMessage(),e);
}
}
/**
* FTP远程命令列表USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT PASS PASVSTOR
* REST CWD STAT RMD XCUP OPTS ACCTTYPE APPE RNFR XCWD HELP XRMD STOU
* AUTH REIN STRU SMNT RNTO LIST NOOPPWD SIZE PBSZ QUIT MODE SYST ABOR
* NLST MKD XPWD MDTM PROT
*在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上\r\n
* ftpclient.sendServer("XMKD/test/bb\r\n"); //执行服务器上的FTP命令
* ftpclient.readServerResponse一定要在sendServer后调用
* nameList("/test")获取指目录下的文件列表XMKD建立目录,当目录存在的情况下再次创建目录时报错XRMD删除目录
* DELE删除文件
*/
}
publicstaticConnectiongetConnection(){
inttime=0;
Connectionconn=null;
do{
try{
Class.forName(getPropertiesValueByKey(workPath
+"/application.properties","className"));
conn=DriverManager.getConnection(
getPropertiesValueByKey(workPath
+"/application.properties","connUrl"),
getPropertiesValueByKey(workPath
+"/application.properties","userName"),
getPropertiesValueByKey(workPath
+"/application.properties","password"));
log.debug("数据库连接成功");
break;
}catch(Exceptione){
log.error("数据库连接失败",e);
time++;
try{
Thread.sleep(3000);
}catch(InterruptedExceptione1){
e1.printStackTrace();
}
}
}while(time<3);
returnconn;
}
publicstaticvoidreadAllReq(Stringpath){
log.info("Read all request file:"+path);
BufferedReaderreader=null;
Connectioncon=getConnection();//数据连接
try{
log.info("Read file:"+path);
Filefile=newFile(path);
reader=newBufferedReader(newFileReader(file));
intline=1;
StringtempString=null;
while((tempString=reader.readLine())!=null){
//System.out.println("line"+line+":"+tempString.split("\t").length);
String[]tempArr=tempString.split("\t");
if(tempArr.length!=15){
log.warn("Line length error!line "+line+":"+tempString);
continue;
}
String[]param=tempArr;
Stringsql="{call[test].[dbo].[test](?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
CallableStatementcall=con.prepareCall(sql);
call.setString(1,param[0]);
call.setString(2,param[1]);
call.setString(3,param[2]);
call.setString(4,param[3]);
call.setString(5,param[4]);
call.setString(6,param[5]);
call.setString(7,param[6]);
call.setString(8,param[7]);
call.setString(9,param[8]);
call.setString(10,param[9]);
call.setString(11,param[10]);
call.setString(12,param[11]);
call.setString(13,param[12]);
call.setString(14,param[13]);
call.setString(15,param[14]);
call.execute();
line++;
}
reader.close();
}catch(Exceptione){
log.error(e.getMessage(),e);
}finally{
if(reader!=null){
try{
reader.close();
}catch(IOExceptione1){
}
}
try{
if(con!=null)
con.close();
}catch(SQLExceptione){
}
}
}
publicstaticvoidreadAddReq(Stringpath){
BufferedReaderreader=null;
log.info("Read add request file:"+path);
Connectioncon=getConnection();//数据连接
try{
Filefile=newFile(path);
reader=newBufferedReader(newFileReader(file));
intline=1;
StringtempString=null;
while((tempString=reader.readLine())!=null){
//System.out.println("line"+line+":"+tempString.split("\t").length);
String[]tempArr=tempString.split("\t");
if(tempArr.length!=15){
log.warn("Line length error!line "+line+":"+tempString);
continue;
}
String[]param=tempArr;
Stringsql="{call[AndroidPlatform].[dbo].[pJTgdlt_ftp_add](?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
CallableStatementcall=con.prepareCall(sql);
call.setString(1,param[0]);
call.setString(2,param[1]);
call.setString(3,param[2]);
call.setString(4,param[3]);
call.setString(5,param[4]);
call.setString(6,param[5]);
call.setString(7,param[6]);
call.setString(8,param[7]);
call.setString(9,param[8]);
call.setString(10,param[9]);
call.setString(11,param[10]);
call.setString(12,param[11]);
call.setString(13,param[12]);
call.setString(14,param[13]);
call.setString(15,param[14]);
call.execute();
line++;
}
reader.close();
}catch(Exceptione){
log.error(e.getMessage(),e);
}finally{
if(reader!=null){
try{
reader.close();
}catch(IOExceptione1){
}
}
}
}
staticStringworkPath=null;
publicstaticStringgetPropertiesValueByKey(StringfileName,Stringkey){
Propertiesp=newProperties();
Stringvalue="";
try{
InputStreamin=newBufferedInputStream(newFileInputStream(fileName));
p.load(in);
value=p.getProperty(key);
}catch(Exceptione){
e.printStackTrace();
return"";
}
returnvalue;
}
}
原文:http://blog.csdn.net/wiker_yong/article/details/39118719
文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr
文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc
文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8
文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束
文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求
文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname
文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立
文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码
文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词
文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限
文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定
文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland