欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java利用apache ftp工具实现文件上传下载和删除功能

程序员文章站 2023-12-20 13:14:58
利用apache ftp工具实现文件的上传下载和删除,具体如下 1、下载相应的jar包      commons-net-1.4...

利用apache ftp工具实现文件的上传下载和删除,具体如下

1、下载相应的jar包

     commons-net-1.4.1.jar

2、实现代码如下:

public class ftputils { 
    //ftp服务器地址 
    public string hostname = "192.168.1.249"; 
    //ftp服务器端口号默认为21 
    public integer port = 21 ; 
    //ftp登录账号 
    public string username = "root"; 
    //ftp登录密码 
    public string password = "123"; 
     
    public ftpclient ftpclient = null; 
     
    /** 
     * 初始化ftp服务器 
     */ 
    public void initftpclient() { 
      ftpclient = new ftpclient(); 
      ftpclient.setcontrolencoding("utf-8"); 
      try { 
        system.out.println("connecting...ftp服务器:"+this.hostname+":"+this.port);  
        ftpclient.connect(hostname, port); //连接ftp服务器 
        ftpclient.login(username, password); //登录ftp服务器 
        int replycode = ftpclient.getreplycode(); //是否成功登录服务器 
        if(!ftpreply.ispositivecompletion(replycode)){ 
          system.out.println("connect failed...ftp服务器:"+this.hostname+":"+this.port);  
        } 
        system.out.println("connect successfu...ftp服务器:"+this.hostname+":"+this.port);  
      }catch (malformedurlexception e) {  
        e.printstacktrace();  
      }catch (ioexception e) {  
        e.printstacktrace();  
      }  
    } 
 
    /** 
    * 上传文件 
    * @param pathname ftp服务保存地址 
    * @param filename 上传到ftp的文件名 
    * @param originfilename 待上传文件的名称(绝对地址) * 
    * @return 
    */ 
    public boolean uploadfile( string pathname, string filename,string originfilename){ 
      boolean flag = false; 
      inputstream inputstream = null; 
      try{ 
        system.out.println("开始上传文件"); 
        inputstream = new fileinputstream(new file(originfilename)); 
        initftpclient(); 
        ftpclient.setfiletype(ftpclient.binary_file_type); 
        createdirecroty(pathname); 
        ftpclient.makedirectory(pathname); 
        ftpclient.changeworkingdirectory(pathname); 
        ftpclient.storefile(filename, inputstream); 
        inputstream.close(); 
        ftpclient.logout(); 
        flag = true; 
        system.out.println("上传文件成功"); 
      }catch (exception e) { 
        system.out.println("上传文件失败"); 
        e.printstacktrace(); 
      }finally{ 
        if(ftpclient.isconnected()){  
          try{ 
            ftpclient.disconnect(); 
          }catch(ioexception e){ 
            e.printstacktrace(); 
          } 
        }  
        if(null != inputstream){ 
          try { 
            inputstream.close(); 
          } catch (ioexception e) { 
            e.printstacktrace(); 
          }  
        }  
      } 
      return true; 
    } 
    /** 
     * 上传文件 
     * @param pathname ftp服务保存地址 
     * @param filename 上传到ftp的文件名 
     * @param inputstream 输入文件流 
     * @return 
     */ 
    public boolean uploadfile( string pathname, string filename,inputstream inputstream){ 
      boolean flag = false; 
      try{ 
        system.out.println("开始上传文件"); 
        initftpclient(); 
        ftpclient.setfiletype(ftpclient.binary_file_type); 
        createdirecroty(pathname); 
        ftpclient.makedirectory(pathname); 
        ftpclient.changeworkingdirectory(pathname); 
        ftpclient.storefile(filename, inputstream); 
        inputstream.close(); 
        ftpclient.logout(); 
        flag = true; 
        system.out.println("上传文件成功"); 
      }catch (exception e) { 
        system.out.println("上传文件失败"); 
        e.printstacktrace(); 
      }finally{ 
        if(ftpclient.isconnected()){  
          try{ 
            ftpclient.disconnect(); 
          }catch(ioexception e){ 
            e.printstacktrace(); 
          } 
        }  
        if(null != inputstream){ 
          try { 
            inputstream.close(); 
          } catch (ioexception e) { 
            e.printstacktrace(); 
          }  
        }  
      } 
      return true; 
    } 
    //改变目录路径 
     public boolean changeworkingdirectory(string directory) { 
        boolean flag = true; 
        try { 
          flag = ftpclient.changeworkingdirectory(directory); 
          if (flag) { 
           system.out.println("进入文件夹" + directory + " 成功!"); 
 
          } else { 
            system.out.println("进入文件夹" + directory + " 失败!开始创建文件夹"); 
          } 
        } catch (ioexception ioe) { 
          ioe.printstacktrace(); 
        } 
        return flag; 
      } 
 
    //创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建 
    public boolean createdirecroty(string remote) throws ioexception { 
      boolean success = true; 
      string directory = remote + "/"; 
      // 如果远程目录不存在,则递归创建远程服务器目录 
      if (!directory.equalsignorecase("/") && !changeworkingdirectory(new string(directory))) { 
        int start = 0; 
        int end = 0; 
        if (directory.startswith("/")) { 
          start = 1; 
        } else { 
          start = 0; 
        } 
        end = directory.indexof("/", start); 
        string path = ""; 
        string paths = ""; 
        while (true) { 
          string subdirectory = new string(remote.substring(start, end).getbytes("gbk"), "iso-8859-1"); 
          path = path + "/" + subdirectory; 
          if (!existfile(path)) { 
            if (makedirectory(subdirectory)) { 
              changeworkingdirectory(subdirectory); 
            } else { 
              system.out.println("创建目录[" + subdirectory + "]失败"); 
              changeworkingdirectory(subdirectory); 
            } 
          } else { 
            changeworkingdirectory(subdirectory); 
          } 
 
          paths = paths + "/" + subdirectory; 
          start = end + 1; 
          end = directory.indexof("/", start); 
          // 检查所有目录是否创建完毕 
          if (end <= start) { 
            break; 
          } 
        } 
      } 
      return success; 
    } 
 
   //判断ftp服务器文件是否存在   
    public boolean existfile(string path) throws ioexception { 
        boolean flag = false; 
        ftpfile[] ftpfilearr = ftpclient.listfiles(path); 
        if (ftpfilearr.length > 0) { 
          flag = true; 
        } 
        return flag; 
      } 
    //创建目录 
    public boolean makedirectory(string dir) { 
      boolean flag = true; 
      try { 
        flag = ftpclient.makedirectory(dir); 
        if (flag) { 
          system.out.println("创建文件夹" + dir + " 成功!"); 
 
        } else { 
          system.out.println("创建文件夹" + dir + " 失败!"); 
        } 
      } catch (exception e) { 
        e.printstacktrace(); 
      } 
      return flag; 
    } 
     
    /** * 下载文件 * 
    * @param pathname ftp服务器文件目录 * 
    * @param filename 文件名称 * 
    * @param localpath 下载后的文件路径 * 
    * @return */ 
    public boolean downloadfile(string pathname, string filename, string localpath){  
      boolean flag = false;  
      outputstream os=null; 
      try {  
        system.out.println("开始下载文件"); 
        initftpclient(); 
        //切换ftp目录  
        ftpclient.changeworkingdirectory(pathname);  
        ftpfile[] ftpfiles = ftpclient.listfiles();  
        for(ftpfile file : ftpfiles){  
          if(filename.equalsignorecase(file.getname())){  
            file localfile = new file(localpath + "/" + file.getname());  
            os = new fileoutputstream(localfile);  
            ftpclient.retrievefile(file.getname(), os);  
            os.close();  
          }  
        }  
        ftpclient.logout();  
        flag = true;  
        system.out.println("下载文件成功"); 
      } catch (exception e) {  
        system.out.println("下载文件失败"); 
        e.printstacktrace();  
      } finally{  
        if(ftpclient.isconnected()){  
          try{ 
            ftpclient.disconnect(); 
          }catch(ioexception e){ 
            e.printstacktrace(); 
          } 
        }  
        if(null != os){ 
          try { 
            os.close(); 
          } catch (ioexception e) { 
            e.printstacktrace(); 
          }  
        }  
      }  
      return flag;  
    } 
     
    /** * 删除文件 * 
    * @param pathname ftp服务器保存目录 * 
    * @param filename 要删除的文件名称 * 
    * @return */  
    public boolean deletefile(string pathname, string filename){  
      boolean flag = false;  
      try {  
        system.out.println("开始删除文件"); 
        initftpclient(); 
        //切换ftp目录  
        ftpclient.changeworkingdirectory(pathname);  
        ftpclient.dele(filename);  
        ftpclient.logout(); 
        flag = true;  
        system.out.println("删除文件成功"); 
      } catch (exception e) {  
        system.out.println("删除文件失败"); 
        e.printstacktrace();  
      } finally { 
        if(ftpclient.isconnected()){  
          try{ 
            ftpclient.disconnect(); 
          }catch(ioexception e){ 
            e.printstacktrace(); 
          } 
        }  
      } 
      return flag;  
    } 
     
    public static void main(string[] args) { 
      ftputils ftp =new ftputils();  
      //ftp.uploadfile("ftpfile/data", "123.docx", "e://123.docx"); 
      //ftp.downloadfile("ftpfile/data", "123.docx", "f://"); 
      ftp.deletefile("ftpfile/data", "123.docx"); 
      system.out.println("ok"); 
    } 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: