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


}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值