开源代码:edtFTPj学习总结

edtFTPj

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

通过对其的学习,尤其是取FILENAME是一个大的挑战,我曾经为这个走了很多的冤枉路,我对其代码总结。
java代码:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->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();
                }
    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值