`

开源代码:edtFTPj学习总结

阅读更多
edtFTPj

edtFTPj是一个FTP客户端包它可以嵌入到应用程序中以便以提供FTP的功能.它提供一些方法如:put(),get(),chdir(),dir()与pwd()等来完成FTP的功能.

通过对其的学习,尤其是取FILENAME是一个大的挑战,我曾经为这个走了很多的冤枉路,我对其代码总结。
package com.throuhout.j2eemodel.util;

/**
 *  保留Enterprisedt公司信息
 *  Copyright (C); 2000-2004 Enterprise Distributed Technologies Ltd
 *
 *  www.enterprisedt.com
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option); any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *  Bug fixes, suggestions and comments should be sent to support@enterprisedt.com
 * nether add by heweiya 
 *  对FTP服务器的通用操作
 *  ConnFTPServer(String host,String username,String password);
 *  Upload(String localfile,String filename);
 *  Download(String localpath);
 *
 */

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;

import com.enterprisedt.net.ftp.FTPClient;
import com.enterprisedt.net.ftp.FTPConnectMode;
import com.enterprisedt.net.ftp.FTPException;
import com.enterprisedt.net.ftp.FTPMessageCollector;
import com.enterprisedt.net.ftp.FTPTransferType;
import com.enterprisedt.util.debug.Logger;

/**
 *  Simple test class for FTPClient
 *
 *  @author      Hans Andersen
 *  @author      Bruce Blackshaw
 */
public class FtpClient {

	/**
	 *  Log stream
	 */
	private static Logger log = Logger.getLogger(FtpClient.class);;
	private FTPClient ftp = null;
	
	
	public void ConnFTPServer(String host, String username, String password); {

		try {
			// set up client    
			ftp = new FTPClient();;
			ftp.setRemoteHost(host);;
			FTPMessageCollector listener = new FTPMessageCollector();;
			ftp.setMessageListener(listener);;
			//ftp.setAutoPassiveIPSubstitution(true);;

			// connect
			log.info("Connecting");;
			ftp.connect();;

			// login
			log.info("Logging in");;
			ftp.login(username, password);;

			// set up passive ASCII transfers
			log.debug("Setting up passive, ASCII transfers");;
			ftp.setConnectMode(FTPConnectMode.ACTIVE);;
			ftp.setType(FTPTransferType.ASCII);;

		} catch (Exception e); {
			log.error("Demo failed", e);;
		}
	}

	public void Upload(String localfile, URL url); {
		String host = url.getHost();;
		int port = url.getPort();;
		File filePath = new File(url.getPath(););;
		String directory = filePath.getParent();.substring(1);;
		String filename = filePath.getName();;
		try {
			//connect(host, port);;
			ftp.chdir(directory);;
			ftp.put(new FileInputStream(localfile);, filename);;
		} catch (Exception e); {
			log.error("Demo failed", e);;
		}
	}
	
	public void Upload(String localpath,String filename); {
		try {
			ftp.put(localpath, filename);;
		} catch (Exception e); {
			log.error("Demo failed", e);;
		}
	}
	
	public void DownloadAll(String localpath);{
		try {
			ftp.chdir("xml");;
			String[] files = ftp.dir(".", true);;

			for (int i = 0; i < files.length; i++); {
				String testfile = files[i].substring(39);;//大家可以看到这里,testfile取得不是filename而是一个字条串,我只是从开始的位置取得FILENAME,方法可能很笨,但是我不知道如何来取得真正的FILENAME。
				log.debug(files[i]);;
				ftp.get(new FileOutputStream(localpath+testfile);,testfile);;
				//ftp.get(localpath + testfile, testfile);;
			}
		} catch (IOException e); {
			// TODO 自动生成 catch 块
			e.printStackTrace();;
		} catch (FTPException e); {
			// TODO 自动生成 catch 块
			e.printStackTrace();;
		}

	}
    public void DisConn();{
    	try {
			ftp.quit();;
			
		} catch (IOException e); {
			// TODO 自动生成 catch 块
			e.printStackTrace();;
		} catch (FTPException e); {
			// TODO 自动生成 catch 块
			e.printStackTrace();;
		}
    }


}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics