importjava.io.BufferedInputStream;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.sql.Connection;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.List;importjava.util.Vector;importorg.apache.commons.net.ftp.FTPClient;importorg.apache.commons.net.ftp.FTPFile;importorg.apache.commons.net.ftp.FTPReply;public classTfpTools {//连接ftp
private FTPClient ftpClient = null;//public static String ip = "117.21.208.37";//public static int port = 21;//public static String username = "eftp";//public static String password = "e1f2t3p4";//public static String sub_path = "/opt/tomcat/webapps/photocdn/msgdata/";
/*** 连接ftp*/
public void connectServer(String ip,int port,String username,String password,String sub_path) throwsException {int i = 10;if (ftpClient == null) {intreply;while (i > 0) {try{
ftpClient= newFTPClient();if (port != 21)
ftpClient.connect(ip, port);elseftpClient.connect(ip);
ftpClient.login(username, password);
reply=ftpClient.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
}
System.out.println("sub_path=============="+sub_path);//对目录进行转换
if(ftpClient.changeWorkingDirectory(sub_path)) {
}else{
ftpClient.disconnect();
ftpClient= null;
}
}catch(Exception e) {
e.printStackTrace();if (0 < i--) {try{
Thread.sleep(10000);continue;
}catch(Exception ex) {
}
}
}
i= 0;
}
}
}/*** 文件上传
*@paramip
*@paramport
*@paramusername
*@parampassword
*@paramsub_path 远程文件上传目录
*@paramlocalFilePath 本地文件存放路径、、
*@paramnewFileName 远程生成的文件路径和文件名
*@throwsException*/
public void uploadFile(String ip,int port,String username,String password,String sub_path,String localFilePath, String newFileName)throwsException {
BufferedInputStream buffIn= null;try{
connectServer(ip,port,username,password,sub_path);//连接服务器
System.out.println("start upload");
buffIn= new BufferedInputStream(newFileInputStream(localFilePath));
System.out.println("find localFilePath success");
ftpClient.storeFile(newFileName, buffIn);
System.out.println("upload success");
}catch(Exception e) {
e.printStackTrace();throwe;
}finally{try{if (buffIn != null)
buffIn.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}/***
* Definition: 读取txt文件,存放到list中,以便于读取
* author: xiehaoyu
* Created date: 2013-6-14
*@paramreadTxt
*@return
*/
public static ListreadTxt(String readTxt){
BufferedReader br= null;
List list = new ArrayList();try{
br= new BufferedReader(new InputStreamReader(newFileInputStream(newFile(readTxt))));
String temp=br.readLine();while (temp != null) {
String[] str=temp.toString().trim().split("\\|");for(String s : str){if(!"".equals(s))
list.add(s);
}
temp=br.readLine();
}
br.close();
}catch(Exception e1) {
e1.printStackTrace();
}returnlist;
}public voidcopyFile(String oldPath, String newPath) {try{int bytesum = 0;int byteread = 0;
File oldfile= newFile(oldPath);if (oldfile.exists()) { //文件存在时
InputStream inStream = new FileInputStream(oldPath); //读入原文件
FileOutputStream fs = newFileOutputStream(newPath);byte[] buffer = new byte[1444];while ( (byteread = inStream.read(buffer)) != -1) {
bytesum+= byteread; //字节数 文件大小
System.out.println(bytesum);
fs.write(buffer,0, byteread);
}
inStream.close();
}
}catch(Exception e) {
System.out.println("复制单个文件操作出错");
e.printStackTrace();
}
}public voiddelFile(String filePathAndName) {try{
String filePath=filePathAndName;
filePath=filePath.toString();
java.io.File myDelFile= newjava.io.File(filePath);
myDelFile.delete();
}catch(Exception e) {
System.out.println("删除文件操作出错");
e.printStackTrace();
}
}/*** 文件下载。。
*@paramurl ftp ip
*@paramport ftp端口
*@paramusername
*@parampassword
*@paramremotePath 下载路径
*@paramfileName 下载文件中包含什么文件名
*@paramlocalPath 本地存放路径
*@return
*/
public static booleandownFile(
String url,intport,
String username,
String password,
String remotePath,
String fileName,
String localPath){boolean success = false;
FTPClient ftp= newFTPClient();try{intreply;
ftp.connect(url, port);//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.login(username, password);//登录
reply =ftp.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();returnsuccess;
}
ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
FTPFile[] fs =ftp.listFiles();
TfpTools fu=newTfpTools();for(FTPFile ff:fs){if(ff.getName().contains(fileName)){if(fu.ToDetermineWhetherAFileExists(ff.getName())){
File localFile= new File(localPath+"/"+ff.getName());
OutputStream is= newFileOutputStream(localFile);
ftp.retrieveFile(ff.getName(), is);
is.close();
}
}
}
ftp.logout();
success= true;
}catch(IOException e) {
e.printStackTrace();
}finally{if(ftp.isConnected()) {try{
ftp.disconnect();
}catch(IOException ioe) {
}
}
}returnsuccess;
}public booleanToDetermineWhetherAFileExists(String fileName){boolean flag=true;
Vector v=new Vector();
v=GetTestXlsFileName("c:/JX_jiekou/src/backups");for(int i=0;i
String str=(String)v.elementAt(i);if(str.equals(fileName)){
flag=false;
}
}returnflag;
}/*** 读取本地某个目录下,所有txt文件的文件名
*@paramfileAbsolutePath 本地文件目录。
*@return
*/
public static VectorGetTestXlsFileName(String fileAbsolutePath) {
Vector vecFile = new Vector();
File file= newFile(fileAbsolutePath);
File[] subFile=file.listFiles();for (int iFileLength = 0; iFileLength < subFile.length; iFileLength++) {//判断是否为文件夹
if (!subFile[iFileLength].isDirectory()) {
String fileName=subFile[iFileLength].getName();//判断是否为.txt结尾
if (fileName.trim().toLowerCase().endsWith(".txt")) {
vecFile.add(fileName);
}
}
}returnvecFile;
}public booleantruncateTable(String tableName){
Connection conn=null;
Statement sm=null;
String sql="truncate table "+tableName;try{
conn=DBConfig.getConn(JkConfig.getDb_url(),JkConfig.getDb_username(),JkConfig.getDb_password(),0);
sm=conn.createStatement();
sm.executeUpdate(sql);
}catch(Exception e) {
e.printStackTrace();
}return true;
}public voidcloseConnect() {try{if (ftpClient != null) {
ftpClient.logout();
ftpClient.disconnect();
ftpClient=null;
}
}catch(Exception e) {
e.printStackTrace();
}
}
}