`
border
  • 浏览: 206660 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在FtpClient中用ftp FTP命令建自己要用的东东。。

阅读更多
由于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;
     }
 }
 
 
}


分享到:
评论

相关推荐

    sun.FtpClient,ftp4j.FTPClient,apache.FTPClient不同的方式操作FTP

    sun.net.ftp.FtpClient,it.sauronsoftware.ftp4j.FTPClient,org.apache.commons.net.ftp.FTPClient三种不同的方式操作FTP

    使用FTPClient实现ftp文件上传

    在本文中,我们将深入探讨如何使用FTPClient来实现FTP文件上传,特别是处理中文文件名的上传问题。 FTP是一种广泛使用的互联网协议,允许用户在两台计算机之间传输文件。在Java中,我们可以利用Apache Commons Net...

    FTPClient_ftp4j

    FTPClient_ftp4j是一个专为...总结来说,FTPClient_ftp4j是一个功能强大且易于使用的Android库,它为开发者提供了全面的FTP支持,可以帮助他们构建自己的FTP客户端应用,满足在Android平台上进行文件传输的需求。

    FTPClient.zip FTPServer.zip

    FTP(File Transfer Protocol)是互联网上用于在不同计算机之间传输文件的一种协议,广泛应用于网站更新、...在日常工作中,正确配置和使用FTP能够极大地提升工作效率,尤其是在多用户协作和跨平台文件共享的场景下。

    Apache FTPClient操作FTP工具类

    Apache FTPClient操作FTP工具类

    Java常用FTP文件操作说明Apache.FTPClient,ftp4j,jftp

    本文将详细讲解三种常用的FTP客户端库——Apache.FTPClient、ftp4j及jftp,并以Apache.FTPClient为例,深入探讨其使用方法。 #### 一、Apache.FTPClient简介 Apache Commons Net是Apache项目下的一个开源工具包,...

    Delphi XE3使用ICS的FTPClient从FTP服务器下载文件

    Delphi XE3使用ICS的FTPClient从FTP服务器下载文件,本人用来实现客户端软件自动升级功能,提供从FTP下载文件的源码供大家参考。之前用的IdFTP连接服务器经常出现10054错误,参考网上的意见使用ICS的FTPClient解决了...

    Java使用Apache的FTPClient操作ftp

    Java程序使用Apache的commons-net-3.0.jar包中的org.apache.commons.net.ftp.FTPClient类实现对ftp上传、下载、删除等操作,是一个不错的东西哦

    ftp服务器开发(FTPClient FTPServer)c#

    (FTPClient FTPServer) sing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System...

    FTPClient,ftp客户端

    在本文中,我们将深入探讨如何使用VC++进行Socket编程来实现一个简单的FTP客户端。 首先,我们需要理解Socket编程的基本概念。Socket是网络通信中的一个端点,它是应用程序通过网络与其他程序通信的接口。在VC++中...

    QT实现FTPServer和FTPClient.zip

    在本文中,我们将深入探讨如何使用QT库来实现FTPServer和FTPClient,以及相关的知识点。 首先,FTP(File Transfer Protocol)是一种网络协议,用于在计算机之间进行文件传输。在QT中,我们可以利用其提供的...

    Java常用FTP文件操作说明 Apache.FTPClient,ftp4j,jftp

    以下是使用ftp4j上传文件的示例: ```java import it.sauronsoftware.ftp4j.*; FTPClient client = new FTPClient(); client.connect("ftp.server.com"); client.login("username", "password"); FTPFileUpload ...

    使用commons.net FTP 和sun.net.ftp.FtpClient 多种方式上传下载(包括批量)删除功能(一)

    在本文中,我们将深入探讨如何使用Apache Commons Net库和Java内置的`sun.net.ftp.FtpClient`来实现FTP(文件传输协议)的功能,包括上传、下载、批量操作以及删除文件。这两个库提供了丰富的API,使得在Java应用...

    用org.apache.commons.net.ftp.FTPClient包实现简单文件下载

    在本文中,我们将深入探讨如何使用`org.apache.commons.net.ftp.FTPClient`包来实现简单的文件下载功能。这个过程涉及到几个关键步骤,包括连接到FTP服务器、登录、设置传输模式、下载文件以及断开连接。 首先,你...

    FtpClient C#ftp辅助类

    FtpClient C#ftp辅助类 提供多种ftp操作

    FtpClient FTP 操作类

    在.NET框架中,`FtpClient`类是一个用于执行FTP(File Transfer Protocol)操作的工具,通常由第三方库提供,例如`SharpFTP`或`FluentFTP`。这个类允许开发者进行文件的上传、下载、删除、重命名等操作,为FTP服务器...

    NowUsingv1.1.rar_ ftpClient_FTP 类_NowUsingv1.1_ftp客户端

    这个名为"NowUsingv1.1.rar"的压缩包提供了一个FTP客户端的C++实现,重点在于其封装在一个简洁而稳定的类中,名为"FtpClient"。这个类只提供了三个主要接口,使得开发者能够更方便地进行文件上传、下载以及执行其他...

    ftpclient所需jar包

    在FTPClient的场景中,虽然它不是直接用于FTP操作,但可能会被用到处理FTP服务器返回的信息,如解析目录列表,或者在配置文件中进行模式匹配。 现在我们详细讲解这两个库及其在FTPClient开发中的作用: 1. **...

    FTP.rar_ftp swing_java FtpClient_java ftp_swing_swing 开发ftp

    标签进一步强调了关键的技术点:“ftp__swing”表明这是用Swing构建的FTP客户端,“java_ftpclient”表示使用了Java的FTP客户端库,“java_ftp”和“swing_开发ftp”则分别强调了Java语言在FTP应用中的使用以及Swing...

Global site tag (gtag.js) - Google Analytics