设为首页 收藏本站
查看: 1066|回复: 0

[经验分享] 在FtpClient中用ftp FTP命令建自己要用的东东。。

[复制链接]

尚未签到

发表于 2016-6-10 06:32:31 | 显示全部楼层 |阅读模式
由于sun没有公开FtpClientAPI所以我们將就使用Sun的未公开类别暫時應急一下,方法命名大多與Common net ftpClient 雷同,不足的只好用issueCommand自己丟FTP命令:
 
import java.io.FileNotFoundException;import java.io.IOException;import java.net.Proxy;import sun.net.TelnetInputStream;import sun.net.TelnetOutputStream;import sun.net.ftp.FtpClient;public class SundFtpClient extends FtpClient {  public static final int   ASCII_FILE_TYPE =0;  public static final int   BINARY_FILE_TYPE=2;  public SundFtpClient(String host) throws IOException {    super(host);  }  public SundFtpClient(String host, int port) throws IOException {    super(host, port);  }  public int issueCommand(java.lang.String cmd) throws IOException{    return super.issueCommand(cmd);  }  public void issueCommandCheck(java.lang.String cmd) throws IOException{    super.issueCommandCheck(cmd);  }  public boolean setFileType(int fileType)throws IOException{    if(fileType==ASCII_FILE_TYPE){      return issueCommand("TYPE A")==1;    }else{      return issueCommand("TYPE B")==1;    }  }  public void enterLocalPassiveMode(){    try{      issueCommand("PASV");    }catch(IOException e){}  }  public boolean isConnected(){    return this.serverIsOpen();  }  public void connect(java.lang.String hostname)throws java.io.IOException{    this.disconnect();    this.openServer(hostname);  }  public void connect(java.lang.String hostname,int port)throws java.io.IOException{    this.disconnect();    this.openServer(hostname,port);  }  public void disconnect()throws java.io.IOException{    if(this.serverIsOpen())      this.closeServer();  }  public boolean deleteFile(String pathname)throws java.io.IOException{    try{      return issueCommand("DELE "+pathname)==1;    }catch(FileNotFoundException e){      return false;    }  }  public boolean makeDirectory(String pathname)throws java.io.IOException{    try{      return issueCommand("MKD "+pathname)==1;    }catch(FileNotFoundException e){      return false;    }  }  public boolean removeDirectory(String pathname)throws java.io.IOException{    try{      return issueCommand("RMD "+pathname)==1;    }catch(FileNotFoundException e){      return false;    }  }  public boolean sendNoOp()throws java.io.IOException{    return issueCommand("NOOP")==1;  }  public String printWorkingDirectory()throws java.io.IOException{    return super.pwd();  }  public boolean changeToParentDirectory()throws java.io.IOException{    return issueCommand("CDUP")==1;  }  public boolean changeWorkingDirectory(String pathname)throws java.io.IOException{    try{      return issueCommand("CWD "+pathname)==1;    }catch(FileNotFoundException e){      return false;    }  }  public void storeFile(String remote,java.io.InputStream local)throws java.io.IOException{    byte[] buf = new byte[1024];    int readed=0;    TelnetOutputStream outs = this.put(remote);    synchronized (local) {     while((readed=local.read(buf,0,1024))>0)        outs.write(buf,0,readed);      outs.flush();      outs.close();      local.close();    }  }  public void retrieveFile(String remote,java.io.OutputStream local)throws java.io.IOException{    byte[] buf = new byte[1024];    int readed=0;    TelnetInputStream ins = this.get(remote);    synchronized (local) {      while((readed=ins.read(buf,0,1024))>0)        local.write(buf,0,readed);      local.flush();      local.close();      ins.close();    }  }}测试代码:import java.io.IOException;import sun.net.ftp.FtpLoginException;/*
 * 作成日: 2006/04/17
 *
 * TODO この生成されたファイルのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */
/**
 * @author Border
 *
 * TODO この生成された型コメントのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */
public class TestSundFtpClient{
 
 
 public static void main(String[] args) {
  
  String hostname = "192.168.1.209";
  int port = 21 ;
  String uid = "anonymous";
  String pwd = "linuxborder@yahoo.com";
  String a = "";
  
  try {
   SundFtpClient aftp = new SundFtpClient(hostname,port);
   
   aftp.login(uid,pwd);  // login
   aftp.binary();  // set to binary mode transfer
   System.out.println("login:" + hostname );
   aftp.makeDirectory("make");
   System.out.println("make ok ! ");
   
   }
  catch(FtpLoginException e){
      a="login erroy: "+hostname+" please input your read uid or pwd: "+e;
      System.out.println(a);
      //return false;
     }
     catch (IOException e){
      a=" connect erroy: "+hostname+" please input your read port: "+e;
      System.out.println(a);
      //return false;
     }
     catch(SecurityException e)
     {
      a=" can't connect: "+hostname+" please check your net: "+e;
      System.out.println(a);
      //return false;
     }
 }
 
 
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-228363-1-1.html 上篇帖子: Java实现FTP操作文件上传与下载 下篇帖子: 用com.oroinc.net.ftp向FTP服务器上传/下载文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表