Java实现ftp功能

Java实现ftp功能源代码:

import sun.net.ftp.*; 
  import sun.net.*; 
  import java.awt.*; 
  import java.awt.event.*; 
  import java.applet.*; 
  import java.io.*; 

  public class FtpApplet extends Applet 
   { 
  FtpClient aftp; 
  DataOutputStream outputs ; 
  TelnetInputStream ins; 
  TelnetOutputStream outs; 
  TextArea lsArea; 
  Label    LblPrompt; 
  Button   BtnConn; 
  Button   BtnClose; 
  TextField  TxtUID; 
  TextField  TxtPWD; 
  TextField  TxtHost; 
  int ch; 
  public String a="没有连接主机"; 
        String hostname=""; 
  public void init () { 
  setBackground(Color.white); 
  setLayout(new GridBagLayout()); 
  GridBagConstraints GBC = new GridBagConstraints(); 
  LblPrompt = new Label("没有连接主机"); 
  LblPrompt.setAlignment(Label.LEFT); 
BtnConn = new Button("连接"); 
  BtnClose = new Button("断开"); 
  BtnClose.enable(false); 
  TxtUID = new TextField("",15); 
  TxtPWD = new TextField("",15); 

  TxtPWD.setEchoCharacter(’*’); 
  TxtHost = new TextField("",20); 
  Label LblUID = new Label("User ID:"); 
  Label LblPWD = new Label("PWD:"); 
  Label LblHost = new Label("Host:"); 

  lsArea = new TextArea(30,80); 
  lsArea.setEditable(false); 

  GBC.gridwidth= GridBagConstraints.REMAINDER; 
  GBC.fill     = GridBagConstraints.HORIZONTAL; 
  ((GridBagLayout)getLayout()).setConstraints(LblPrompt,GBC); 
  add(LblPrompt); 

  GBC.gridwidth=1; 
  ((GridBagLayout)getLayout()).setConstraints(LblHost,GBC); 
  add(LblHost); 
  GBC.gridwidth=GridBagConstraints.REMAINDER; 
  ((GridBagLayout)getLayout()).setConstraints(TxtHost,GBC); 
  add(TxtHost); 

  GBC.gridwidth=1; 
  ((GridBagLayout)getLayout()).setConstraints(LblUID,GBC); 
  add(LblUID); 
  GBC.gridwidth=1; 
  ((GridBagLayout)getLayout()).setConstraints(TxtUID,GBC); 
  add(TxtUID); 
GBC.gridwidth=1; 
  ((GridBagLayout)getLayout()).setConstraints(LblPWD,GBC); 
  add(LblPWD); 
  GBC.gridwidth=1; 
  ((GridBagLayout)getLayout()).setConstraints(TxtPWD,GBC); 
  add(TxtPWD); 

  GBC.gridwidth=1; 

  GBC.weightx=2; 
  ((GridBagLayout)getLayout()).setConstraints(BtnConn,GBC); 
  add(BtnConn); 
  GBC.gridwidth=GridBagConstraints.REMAINDER; 

  ((GridBagLayout)getLayout()).setConstraints(BtnClose,GBC); 
  add(BtnClose); 

  GBC.gridwidth=GridBagConstraints.REMAINDER; 
  GBC.fill     = GridBagConstraints.HORIZONTAL; 
  ((GridBagLayout)getLayout()).setConstraints(lsArea,GBC); 
  add(lsArea); 
          } 
 
  public boolean connect(String hostname, String uid,String pwd) 
  { 
                  this.hostname = hostname; 
  LblPrompt.setText("正在连接,请等待....."); 
  try{ 
    aftp =new FtpClient(hostname); 
    aftp.login(uid,pwd); 
    aftp.binary(); 
    showFileContents(); 
  } 
  catch(FtpLoginException e){ 
  a="无权限与主机:"+hostname+"连接!"; 
  LblPrompt.setText(a); 
  return false; 
  } 
  catch (IOException e){ 
  a="连接主机:"+hostname+"失败!"; 
  LblPrompt.setText(a); 
  return false; 
  } 
  catch(SecurityException e) 
  { 
  a="无权限与主机:"+hostname+"连接!"; 
  LblPrompt.setText(a); 
  return false; 
  } 
  LblPrompt.setText("连接主机:"+hostname+"成功!"); 
  return true; 
  } 
public void stop() 
  { 
  try 
  { 
  aftp.closeServer(); 
  } 
  catch(IOException e) 
  { 
  } 
  } 

  public void paint(Graphics g){ 
  } 


  public boolean action(Event evt,Object obj) 
  { 
  if (evt.target == BtnConn) 
  { 
  LblPrompt.setText("正在连接,请等待....."); 
  if (connect(TxtHost.getText(),TxtUID.getText(),TxtPWD.getText())) 
  { 
  BtnConn.setEnabled(false); 
  BtnClose.setEnabled(true); 
  } 
  return true; 
  } 
  if (evt.target == BtnClose) 
  { 
  stop(); 
  BtnConn.enable(true); 
  BtnClose.enable(false); 
  LblPrompt.setText("与主机"+hostname+"连接已断开!"); 
  return true; 
  } 
  return super.action(evt,obj); 
  } 
  public boolean sendFile(String filepathname){ 
  boolean result=true; 
  if (aftp != null) 
  { 
  LblPrompt.setText("正在粘贴文件,请耐心等待...."); 
String  contentperline; 
  try{ 
  a="粘贴成功!"; 
  String fg =new  String("\\"); 
  int index = filepathname.lastIndexOf(fg); 
String filename = filepathname.substring(index+1); 
  File localFile ; 
  localFile = new File(filepathname) ; 
  RandomAccessFile sendFile = new RandomAccessFile(filepathname,"r"); 
  // 
  sendFile.seek(0); 
  outs = aftp.put(filename); 
  outputs = new DataOutputStream(outs); 
  while (sendFile.getFilePointer() < sendFile.length() ) 
  { 
    ch = sendFile.read(); 
    outputs.write(ch); 
  } 
  outs.close(); 
  sendFile.close(); 
  } 
  catch(IOException e){ 
    a = "粘贴失败!"; 
    result = false ; 

  } 
  LblPrompt.setText(a); 
  showFileContents(); 
  } 
  else{ 
  result = false; 
  } 
  return result; 
  } 
public void showFileContents() 
  { 
  StringBuffer buf = new StringBuffer(); 
  lsArea.setText(""); 
  try 
  { 
  ins= aftp.list(); 
  while ((ch=ins.read())>=0){ 

    buf.append((char)ch); 
  } 
      lsArea.appendText(buf.toString()); 
  ins.close(); 
          } 
  catch(IOException e) 
  { 
  } 
  } 
          public static void main(String args[]){ 
               Frame f = new Frame("FTP Client"); 
               f.addWindowListener(new WindowAdapter(){ 
                 public void windowClosing(WindowEvent e){ 
                     System.exit(0); 
                 } 
  
               }); 
               FtpApplet ftp = new  FtpApplet(); 
               ftp.init(); 
               ftp.start(); 
               f.add(ftp); 
               f.pack(); 
               f.setVisible(true); 
          } 
  }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值