zoukankan      html  css  js  c++  java
  • java做的比较完善的FTP上传下载文件服务器源码

    Filename:  ftp.java
    Author:   leetsing(elove)
    Create date: 2004-08-30
    Use:   connect to FTP server,then upload and download file
    Modify date: 2004-09-05 add to upload file
         2004-09-13 add to download file
    Copy right:  Magisky Media Technology Co.,Ltd.
    
    *******************************************************************************************************
    字串7
    
    */
    //import cz.dhl.io.*;
    //import cz.dhl.ftp.*;
    import sun.net.ftp.*;
    import sun.net.*;
    import java.applet.*;
    import java.io.*;
    import java.io.IOException;
    import java.util.StringTokenizer;
    import sun.net.ftp.FtpClient;
    import java.util.ArrayList;
    
    public class ftp  extends Applet
    {
    FtpClient aftp;
    DataOutputStream outputs ;
    TelnetInputStream ins;
    TelnetOutputStream outs;
    
    int ch;
    public String a;
    String hostname="";
    private String path = "/";
    
    public static void main(String[] args)
    {
      String hostname = "192.168.0.56";
      int port = 2121;
      String uid = "lee";
      String pwd = "lee";
      String RWFileDir = "D:\smsftp\";//文件目录
    
      //连接ftp服务器
      ftp ft = new  ftp();
      ft.connect(RWFileDir,hostname,port,uid,pwd);
    字串3
    
    
      //下载文件
      if (ft.aftp != null){
       try {
        ft.getNameList(RWFileDir);
       }catch(IOException e)
       {
        System.out.println("下载文件出错:"+e);
       }
      }
    
    
      //上传文件
      if (ft.aftp != null){
       String sdir = RWFileDir + "subunsubfromsp\";
       File fdir = new File(sdir);
       String FileName = "";
      
       for(int i=0;i    FileName = sdir + (fdir.list())[i];
       
        ft.uploadFile(RWFileDir,FileName);
       }
       //System.out.println("成功上传的文件:");
       //ft.showFileContents("subunsubfromsp\");
      }
    
      //删除subunsubfromsp目录下已经上传的文件文件 字串6
    //  ft.deleFile(RWFileDir);
    
      //断开服务器连接
      ft.stop(RWFileDir);
    
    }
    
    public FtpClient connect(String RWFileDir,String hostname,int port,String uid,String pwd)
    {
      this.hostname = hostname;
      System.out.println("正在连接"+hostname+",请等待.....");
      try{
       aftp = new FtpClient(hostname,port);
       aftp.login(uid,pwd);
       aftp.binary();
       //aftp.openPortDataConnection();
       a = "连接主机:"+hostname+"成功!";
       System.out.println(a);
      }
      catch(FtpLoginException e){
       a="登陆主机:"+hostname+"失败!请检查用户名或密码是否正确:"+e;
       System.out.println(a);
       //return false;
      }
      catch (IOException e){
       a="连接主机:"+hostname+"失败!请检查端口是否正确:"+e; 字串3
       System.out.println(a);
       //return false;
      }
      catch(SecurityException e)
      {
       a="无权限与主机:"+hostname+"连接!请检查是否有访问权限:"+e;
       System.out.println(a);
       //return false;
      }
      
      log(RWFileDir,a);
      return aftp;
    }
    
    public void stop(String RWFileDir)
    {
      String message = "";
      try {
       if(aftp!=null){
        aftp.closeServer();
        message = "与主机"+hostname+"连接已断开!";
        System.out.println(message);
        log(RWFileDir,message);
       }
      }
      catch(IOException e)
      {
       message = "与主机"+hostname+"断开连接失败!"+e; 字串2
       System.out.println(message);
       log(RWFileDir,message);
      }
    }
    
    
    public boolean downloadFile(String RWFileDir,String filepathname){
      boolean result=true;
      String message = "";
      if (aftp != null)
      {
       System.out.println("正在下载文件"+filepathname+",请等待....");
       String badfile = filepathname.substring(filepathname.length()-4,filepathname.length());
       String badlog = filepathname.substring(filepathname.length()-7,filepathname.length());
       String baddir = "";
       if ((badfile.compareTo(".bad") != 0) && (badlog.compareTo(".badlog") != 0)){
        baddir = "subunsubtosp\";
       }
       else{
        baddir = "bad\";
       } 字串9
       String strdir = "subunsubtosp\";
       //System.out.println(RWFileDir + baddir + filepathname);
       try{
        //FtpClient fc=new FtpClient("192.168.0.56",2121);
        //fc.login("lee","lee");
        int ch;
        File fi = new File(RWFileDir + baddir + filepathname);
        //aftp.cd(strdir);
        RandomAccessFile getFile = new RandomAccessFile(fi,"rw");
        getFile.seek(0);
        TelnetInputStream fget=aftp.get(strdir+filepathname);
        DataInputStream puts = new DataInputStream(fget);
        while ((ch = puts.read()) >= 0) {
         getFile.write(ch);
         
        }
        //s.delete(); 字串1
        
        fget.close();
        getFile.close();
        //fc.closeServer();
    
        message = "下载"+filepathname+"文件到"+baddir +"目录成功!";
        System.out.println(message);
        log(RWFileDir,message);
       }
       catch(IOException e){
        message = "下载"+filepathname+"文件到"+baddir +"目录失败!"+e;
        System.out.println(message);
        log(RWFileDir,message);
        result = false ;
    
       }
      }
      else{
       result = false;
      }
      return result;
    }
    
    
    public boolean uploadFile(String RWFileDir,String filepathname){
      boolean result=true; 字串8
      String message = "";
      if (aftp != null)
      {
       System.out.println("正在上传文件"+filepathname+",请等待....");
    
       try{
        String fg =new  String("\subunsubfromsp\");
        int index = filepathname.lastIndexOf(fg);
        String filename = filepathname.substring(index+1);
        File localFile = new File(filepathname) ;
          
        RandomAccessFile sendFile = new RandomAccessFile(filepathname,"r");
        //
        sendFile.seek(0);
        //改名上传temp_
        filename = filename.substring(0,15)+"temp_"+filename.substring(15,filename.length());
        outs = aftp.put(filename);
        outputs = new DataOutputStream(outs); 字串8
        while (sendFile.getFilePointer() < sendFile.length() )
        {
         ch = sendFile.read();
         outputs.write(ch);
        }
        
        rename(filename.substring(15,filename.length()),filename.substring(20,filename.length()));
        outs.close();
        sendFile.close();
        
        message = "上传"+filepathname+"文件成功!";
        System.out.println(message);
        log(RWFileDir,message);
       }
       catch(IOException e){
        message = "上传"+filepathname+"文件失败!"+e;
        System.out.println(message);
        log(RWFileDir,message);
        result = false ;
    
    字串1
    
    
       }
      }
      else{
       result = false;
      }
      return result;
    }
    
    public void rename(String oldName,String newName){
      
       //aftp.renameTo(oldName,newName);
       File Old = new File(oldName); //oldName
       File New = new File(newName); //newName
       //aftp.renameTo(New);
       //boolean Old.renameTo(File newName);
       //System.out.println(Old);
       //System.out.println(New);
      
    }
    
    public static void deleFile(String RWFileDir) {
    //try {
      //取得ReadFile目录下的txt文件
      String sdir = RWFileDir + "subunsubfromsp\";
      File fdir = new File(sdir);
      String FileName = "";
      int j = fdir.list().length;
      
      System.out.println(sdir+"目录下要删除的文件数:"+fdir.list().length);
    字串6
    
      File  file;
      for(int i=0;i  {
       //删除subunsubfromsp中的txt文件
       FileName = RWFileDir + "subunsubfromsp\" + (fdir.list())[0];
       file = new  File(FileName);
       file.delete();
       System.out.println("已经成功删除"+FileName+"文件!");
      }
  • 相关阅读:
    头文件stdio与stdlib.h的区别
    宝塔利用git+ webhooks 实现git更新远程同步Linux服务器
    Linux源码安装步骤
    Promise.all和Promise.race区别,和使用场景
    vue显示富文本
    Js实现将html页面或div生成图片
    JS
    关于Swiper和vue数据顺序加载问题处理
    php 数据库备份(可用作定时任务)
    js async await 终极异步解决方案
  • 原文地址:https://www.cnblogs.com/bruce_zhao/p/3810275.html
Copyright © 2011-2022 走看看