您的位置:首页 > 编程语言 > PHP开发

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

2006-04-17 17:31 411 查看
由于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;
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: