`

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


}

分享到:
评论

相关推荐

    edtftpj.zip

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

    工业通信modbus协议的开源代码

    总结,工业通信modbus协议的开源代码是宝贵的资源,它不仅提供了理解和实现Modbus协议的途径,而且通过支持Linux和ARM处理器,极大地扩展了其应用范围。对于工业自动化领域的开发者而言,这是一个学习、创新和优化...

    LookAround开源代码移动互联网客户端使用众多第三方库做客户端开发初步可以学习借鉴。.zip

    总结而言,LookAround开源代码项目为移动互联网客户端开发提供了一个很好的学习平台,它集成了多种第三方库,展示了实际开发中的常见技术栈。通过深入研究和实践,开发者不仅可以掌握具体的编程技巧,还能理解如何...

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

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

    仿三菱PLC开源代码

    【仿三菱PLC开源代码】是一个专为学习和开发基于8051芯片的PLC(可编程逻辑控制器)设计的项目。8051是一款经典的微处理器,广泛应用于嵌入式系统,包括PLC设备。这个开源项目旨在提供一个与三菱FX1N系列PLC兼容的...

    最新TX滑块TDC纯算法开源代码

    开源代码的发布为开发者提供了一个学习和研究此类验证码实现的宝贵机会。 首先,我们需要理解滑块验证码的工作原理。通常,这种验证码会展示一张被部分遮挡的图片,用户需要通过移动滑块来覆盖图片中的隐藏部分,...

    H.264 开源代码

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

    61850 开源代码

    总结而言,61850开源代码是理解和应用变电站自动化技术的重要途径,它涵盖了从底层通信协议到上层应用服务的全面知识,对于电力系统自动化领域的技术人员来说,这是一个宝贵的参考资料。通过学习和实践,我们可以更...

    开源opc:lightOPC源码

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

    RM2016步兵车开源代码

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

    如何阅读开源代码

    优秀的源代码往往包含了开发者们在长期实践中总结出来的高效解决方案,通过仔细研读这些代码,我们不仅能够学习到具体的实现方式,还能够理解背后的逻辑和设计理念。这对于提高编程水平具有重要作用。 **好处之二:...

    微信公众号第三方开发平台开源代码(python版本)

    2、图文编辑;...4、自定义菜单;以及扩展功能:1、微信的图文列表,2、分类以及微网站服务。为了能够让每篇文章、分类都能够通过...www.yimi.ch CSDN开源代码库:https://code.csdn.net/u014491629/yimi-weixinportal

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

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

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

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

    IEC61850开源代码libIEC61850

    《IEC61850开源代码libIEC61850详解》 IEC61850是国际电工委员会(International Electrotechnical Commission,简称IEC)制定的一项标准,它主要针对电力系统自动化设备之间的通信,旨在实现变电站自动化系统的互...

    tftp协议开源代码

    TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种轻量级的文件传输协议,主要设计...对于想要从事网络服务开发、嵌入式系统编程或者网络设备配置的人来说,TFTP协议及其开源实现是不可多得的学习资源。

    Android四种播放器开源代码

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

    WPF优秀开源代码合集

    资源名称:WPF优秀开源代码合集资源目录:【】caliburnmicro-5f63ca29da0c【】chronoswpf-96133【】dynamicdatadisplay-94877【】fluent-72f5e3ec252b【】graphsharp-9c108fe2dfa4【】helixtoolkit-8c0d58aa0295【IT...

    19届智能车镜头组c车模TC264迪克旋转队开源代码

    通过分析和学习这些开源代码,我们可以理解智能车的控制原理,学习如何利用TC264这样的高级微控制器进行系统设计,并且能够借鉴他们的优化技巧,提升自己的项目开发能力。开源精神促进了技术的交流和进步,让我们...

    金山开源源代码 金山开源源代码

    总结来说,金山开源源代码为开发者提供了一个宝贵的资源,不仅能够提升个人技能,也能促进整个软件行业的繁荣。通过深入研究和积极参与,开发者可以从中学到实际的编程技巧,理解大型项目的设计思路,甚至参与到开源...

Global site tag (gtag.js) - Google Analytics