编写ftp客户端

标题:编写ftp客户端
作者:kagula
日期:2007-01-04

目的:
通过这里的代码,在你的应用程序中,可以同ftp服务器,上传和下载文件,无需任何修改
适应任何环境。

正文:
[1]从FTP Server取文件的源码
/**
* @param map
* 入口参数:
* ftp.adr 服务器名称
* ftp.usr 登录名
* ftp.pwd 登录密码
*
* ftp.serverpath 服务端文件存放路径(含文件名,开头不能是/符号)
* ftp.file 本地存储路径(含文件名)建议用绝对路径
*
* 如果相关key不存在,将引发NullPointer异常!
*
*/
public void ftp_getfile(Map map)
{
String adr=null;
String usr=null;
String pwd=null;
String serverpath=null;
String file=null;
try{
adr= map.get("ftp.adr").toString();
usr= map.get("ftp.usr").toString();
pwd= map.get("ftp.pwd").toString();
serverpath=map.get("ftp.serverpath").toString();
file=map.get("ftp.file").toString();
}catch(Exception e)
{
System.out.println("参数不完整"+e.toString());
return;
}
//Content
try
{
//new URL("ftp://username:[email protected]/file.zip;type=i");
URL url = new URL("ftp://"+usr+":"+pwd+"@"+adr+"/"+serverpath+";type=i");
URLConnection con = url.openConnection();
BufferedInputStream in = new BufferedInputStream(con.getInputStream());
FileOutputStream out = new FileOutputStream(file);

int i = 0;
byte[] bytesIn = new byte[1024];
while ((i = in.read(bytesIn)) >= 0) {
out.write(bytesIn, 0, i);
}
out.close();
in.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
[2]向FTP Client上传文件的源码

/**
* @param map
* 入口参数:
* ftp.adr 服务器名称
* ftp.usr 登录名
* ftp.pwd 登录密码
*
* ftp.serverpath 上传路径(服务端存放路径)
* ftp.file 上传文件(含本地路径)
*
* 如果相关key不存在,将引发NullPointer异常!
*
* 注意:[1] serverpath中所指路径不存在,不会自动建立路径,会返回出错信息。
* [2] server上同名文件存在,新上传文件,会覆盖原文件。
*/
public void ftp_putfile(Map map)
{
String adr=null;
String usr=null;
String pwd=null;
String serverpath=null;
String file=null;
try{
adr= map.get("ftp.adr").toString();
usr= map.get("ftp.usr").toString();
pwd= map.get("ftp.pwd").toString();
serverpath=map.get("ftp.serverpath").toString();
file=map.get("ftp.file").toString();
}catch(Exception e)
{
System.out.println("参数不完整"+e.toString());
return;
}

//Content
JakartaFtpWrapper ftp = new JakartaFtpWrapper();
try {
if (ftp.connectAndLogin(adr, usr, pwd)) {
//登录成功
ftp.setPassiveMode(true);
ftp.binary();
String s=serverpath+getFileName(file);
if(!ftp.uploadFile(file, s))
{
System.out.println("上传文件[to server store location]["+s+"]失败!");
}
}
}catch(Exception e)
{
e.printStackTrace();
}
finally{
try{
ftp.logout();
ftp.disconnect();
}catch(Exception e)
{
e.printStackTrace();
}
}
}

参考网站:
[1]Java FTP Tips
http://www.nsftools.com/tips/JavaFtp.htm

你可能感兴趣的:(ftp)