在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; } } }
相关文章推荐
- <源代码>FTPclient追加方式上传自己定义信息
- ftp ftpclient异常解决、远程命令已经错误代码
- 使用 FileZilla FTP Client连接Vsftpd在执行LIST命令后提示连接超时
- 使用FTPClient构造自己的FTP类
- (一)、Sun FtpClient
- 强烈推荐一个纯java的FTP Client库:ftp4j
- 自己实现的一个python版本的多线程 ftp扫描器,python版本3.0以上
- Linux系统调用的内核命令 : 探究SCI并添加自己的调用
- Linux(centos)不能使用FTP 命令 -bash: ftp: command not found
- Linux(centos)不能使用FTP 命令 -bash: ftp: command not found
- 用批处理命令实现FTP文件的自动传输
- ftp org.apache.commons.net.ftp.FTPClient 判断文件是否存在
- System.Net.FtpClient FTP 协议的客户端开发包
- git命令及自己的总结
- git自己用得着的命令
- FTP文件传输协议常用命令
- Quagga添加自己的命令
- mysql command line client 使用命令
- linux自己常用命令总汇--不定时更新
- 自己实现的 PING 命令···