在FtpClient中用ftp FTP命令建自己要用的东东。。
由于sun没有公开FtpClient的API所以我们將就使用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; 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; 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]