编写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客户端)