由于 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 [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