`

开源代码: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();;
		}
    }


}

分享到:
评论

相关推荐

    开源代码使用指南

    开源代码使用指南  开源代码(Open Source):是促进软件发展的一种协作方式。与商用软件不同,它公开源代码, 允许用户直接拿来学习、开发。使用Open Source的应用受到Open Source的许可证限制,如有些 Open ...

    edtftpj.zip

    2. **异步传输**:EDTFTPJ允许异步文件传输,这意味着用户可以在执行其他任务的同时进行文件上传或下载,提高了工作效率。 3. **断点续传**:在传输过程中如果因网络问题中断,该工具支持从上次中断的地方继续,...

    GIS开源代码GIS开源代码GIS开源代码 空间分析

    同时,他们还能深入到GIS的内部机制,学习如何利用开源GIS代码开发自己的应用程序,或者改进现有的GIS功能。这对于GIS领域的研究人员、软件工程师和地理信息专业学生来说,是一份极具价值的学习材料。

    H.264 开源代码

    - **学习研究**:开源代码可以帮助开发者深入理解H.264编码的内部机制,提高技术水平。 - **二次开发**:开发者可以基于开源代码进行定制化开发,满足特定应用场景的需求。 - **性能优化**:开源项目通常会持续...

    开源opc:lightOPC源码

    LightOPC是其中的一个开源实现,对于学习和理解OPC技术具有很高的价值。本篇将深入探讨LightOPC的源码,以及与之相关的其他资源。 首先,LightOPC是一个轻量级的 OPC UA (OPC统一架构) 客户端和服务器库,它是基于...

    RM2016步兵车开源代码

    这不仅是因为比赛本身的竞技激烈,更是因为大赛组委会决定开源当年步兵车的代码,为全球的机器人爱好者提供了一次宝贵的学习和研究机会。这个开源项目不仅体现了技术的开放精神,也为参赛者和开发者提供了强大的工具...

    金山卫士开源代码

    【金山卫士开源代码】是安全领域的一款知名软件,其开源版本为开发者提供了一次深入研究和学习安全软件实现机制的宝贵机会。金山卫士主要致力于保护用户的计算机免受病毒、木马、恶意软件等威胁,它包含了丰富的防...

    真实世界的ReactNative应用及其开源代码库供开发人员学习

    真实世界的React Native应用及其开源代码库供开发人员学习

    3维Gis开源代码,与任何公司都没有关系,只是3D开源代码

    三维GIS(Geographic Information System)是一种能够处理、分析和展示地理空间数据的系统,而开源的三维GIS代码意味着这些技术是公开的,可供开发者自由使用、修改和分发。这样的代码库通常包含了用于构建3D地理...

    OBD开源代码资料

    学习和使用这些开源代码,开发者需要掌握一些关键技能,例如嵌入式编程、蓝牙或Wi-Fi通信、协议解析、数据分析等。对于初学者,可以通过阅读源码理解OBD通信流程,对于有经验的开发者,可以在此基础上进行创新和优化...

    Python开源项目之人工智能老照片修复算法-库包等

    Python开源项目之人工智能老照片修复算法学习 Bringing-Old-Photos-Back-to-Life-master完整代码,只为更加节省各位开发者的时间,开箱即用,无需烦恼各种确实配置等。 开源代码:...

    BGP zebra开源代码

    **BGP(边界网关协议)是互联网上用于在自治系统(AS)之间交换路由信息的关键协议之一。它是一个路径矢量协议,负责在不同网络间建立连接并...无论是学习、教学还是创新,这份开源代码都是一个不可多得的学习资源。

    Cocos2dx开源游戏:光线迷宫

    这款游戏的亮点在于其开源特性,开发者可以深入研究源代码,学习游戏开发的技术细节,提升自身的编程技能。 Cocos2dx是一个流行的跨平台2D游戏开发框架,它基于C++,同时提供了Python、Lua等多种脚本语言接口,使得...

    Android四种播放器开源代码

    在Android平台上,开发音视频播放应用是一个常见的任务,而开源代码的存在使得开发者能够学习和借鉴现有的解决方案。本文将深入探讨Android的四种播放器开源代码,包括rockplayer、PlayerActivity、Music_Player和...

    Windows内核情景分析-采用开源代码ReactOS(下册)高清pdf版

    总的来说,《Windows内核情景分析-采用开源代码ReactOS(下册)》适合计算机相关专业的高年级学生和研究生,作为深入学习操作系统原理的教材。同时,该书也是软件工程师特别是系统软件开发人员的重要参考书,不仅...

    室内地图开源代码

    【室内地图开源代码】是一种专为建筑物内部设计的导航系统,它允许开发者创建、管理和集成交互式的室内地图到他们的应用程序中。开源意味着源代码可供公众查看、修改和分发,鼓励社区协作和改进。在本案例中,...

    基于QML的水闸测控系统开源代码及运行Demo

    总结来说,这个开源项目为学习和研究水闸测控系统以及QML技术提供了宝贵的资源。通过理解和研究这个项目,开发者不仅能掌握QML的高级用法,还能了解到如何构建一套完整的水闸控制解决方案,这对于提升水利工程的自动...

    labview OpenG开源代码

    labview OpenG开源代码,使用方便

    modbus开源代码

    开源的Modbus实现为开发者提供了一种经济且灵活的方式,来集成Modbus功能到自己的项目中,无需从头开始编写代码。这个开源的Modbus源代码集合正是这样一个资源,它可以帮助你快速地将Modbus功能添加到你的工程中。 ...

Global site tag (gtag.js) - Google Analytics