欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

开源代码:edtFTPj学习总结 .netUP应用服务器XML 

程序员文章站 2022-07-09 20:39:20
...
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();;
		}
    }


}