当前位置: 移动技术网 > IT编程>开发语言>Java > Java FTP上传下载删除功能实例代码

Java FTP上传下载删除功能实例代码

2019年07月22日  | 移动技术网IT编程  | 我要评论

在没给大家上完整代码之前先给大家说下注意点:

 ftp上传下载,容易出现乱码,记得转换

package com.yinhai.team.action;
import java.io.file;
import java.io.fileinputstream;
import java.io.fileoutputstream;
import java.io.ioexception;
import java.io.inputstream;
import java.io.outputstream;
import org.apache.commons.net.ftp.ftpclient;
import org.apache.commons.net.ftp.ftpfile;
import org.apache.commons.net.ftp.ftpreply;
public class favftputil {
   /**
    * 上传文件(可供action/controller层使用)未测试
    * @param hostname ftp服务器地址 
    * @param port ftp服务器端口号
    * @param username ftp登录帐号
    * @param password ftp登录密码
    * @param pathname ftp服务器保存目录
    * @param filename 上传到ftp服务器后的文件名称
    * @param inputstream 输入文件流
    * @return
    */
   public static boolean uploadfile(string hostname, int port, string username, string password, string pathname, string filename, inputstream inputstream){
    boolean flag = false;
    ftpclient ftpclient = new ftpclient();
    ftpclient.setcontrolencoding("utf-8");
    try {
     //连接ftp服务器
     ftpclient.connect(hostname, port);
     //登录ftp服务器
     ftpclient.login(username, password);
     //是否成功登录ftp服务器
     int replycode = ftpclient.getreplycode();
     if(!ftpreply.ispositivecompletion(replycode)){
      return flag;
     }
     ftpclient.setfiletype(ftpclient.binary_file_type);
     ftpclient.makedirectory(pathname);
     ftpclient.changeworkingdirectory(pathname);
     ftpclient.storefile(filename, inputstream);
     inputstream.close();
     ftpclient.logout();
     flag = true;
    } catch (exception e) {
     e.printstacktrace();
    } finally{
     if(ftpclient.isconnected()){
      try {
       ftpclient.disconnect();
      } catch (ioexception e) {
       e.printstacktrace();
      }
     }
    }
    return flag;
   }
   /**
    * 上传文件(可对文件进行重命名)未测试
    * @param hostname ftp服务器地址
    * @param port ftp服务器端口号
    * @param username ftp登录帐号
    * @param password ftp登录密码
    * @param pathname ftp服务器保存目录
    * @param filename 上传到ftp服务器后的文件名称
    * @param originfilename 待上传文件的名称(绝对地址)
    * @return
    */
   public static boolean uploadfilefromproduction(string hostname, int port, string username, string password, string pathname, string filename, string originfilename){
    boolean flag = false;
    try {
     inputstream inputstream = new fileinputstream(new file(originfilename));
     flag = uploadfile(hostname, port, username, password, pathname, filename, inputstream);
    } catch (exception e) {
     e.printstacktrace();
    }
    return flag;
   }
   /**
    * 上传文件(不可以进行文件的重命名操作) 未测试
    * @param hostname ftp服务器地址
    * @param port ftp服务器端口号
    * @param username ftp登录帐号
    * @param password ftp登录密码
    * @param pathname ftp服务器保存目录
    * @param originfilename 待上传文件的名称(绝对地址)
    * @return
    */
   public static boolean uploadfilefromproduction(string hostname, int port, string username, string password, string pathname, string originfilename){
    boolean flag = false;
    try {
     string filename = new file(originfilename).getname();
     inputstream inputstream = new fileinputstream(new file(originfilename));
     flag = uploadfile(hostname, port, username, password, pathname, filename, inputstream);
    } catch (exception e) {
     e.printstacktrace();
    }
    return flag;
   }
   /** 
    * 删除文件 未测试
    * @param hostname ftp服务器地址
    * @param port ftp服务器端口号
    * @param username ftp登录帐号
    * @param password ftp登录密码
    * @param pathname ftp服务器保存目录
    * @param filename 要删除的文件名称
    * @return
    */
   public static boolean deletefile(string hostname, int port, string username, string password, string pathname, string filename){
    boolean flag = false;
    ftpclient ftpclient = new ftpclient();
    try {
     //连接ftp服务器
     ftpclient.connect(hostname, port);
     //登录ftp服务器
     ftpclient.login(username, password);
     //验证ftp服务器是否登录成功
     int replycode = ftpclient.getreplycode();
     if(!ftpreply.ispositivecompletion(replycode)){
      return flag;
     }
     //切换ftp目录
     ftpclient.changeworkingdirectory(pathname);
     ftpclient.dele(filename);
     ftpclient.logout();
     flag = true;
    } catch (exception e) {
     e.printstacktrace();
    } finally{
     if(ftpclient.isconnected()){
      try {
       ftpclient.logout();
      } catch (ioexception e) {
      }
     }
    }
    return flag;
   }
   /**
    * 下载文件 
    * @param hostname ftp服务器地址
    * @param port ftp服务器端口号
    * @param username ftp登录帐号
    * @param password ftp登录密码
    * @param pathname ftp服务器文件目录
    * @param filename 文件名称
    * @param localpath 下载后的文件路径
    * @return
    */
  public static boolean downloadfile(string hostname, int port, string username, string password, string pathname, string filename, string localpath){
    boolean flag = false;
    ftpclient ftpclient = new ftpclient();
    try {
     //连接ftp服务器
     ftpclient.connect(hostname, port);
     //登录ftp服务器
     ftpclient.login(username, password);
     //验证ftp服务器是否登录成功
     int replycode = ftpclient.getreplycode();
     if(!ftpreply.ispositivecompletion(replycode)){
      return flag;
     }
     //切换ftp目录
     boolean b = ftpclient.changeworkingdirectory(new string(pathname.getbytes(),"iso-8859-1"));
     system.out.println(b);
     ftpfile[] ftpfiles = ftpclient.listfiles();
     for(ftpfile file : ftpfiles){
       string fname = new string(file.getname().getbytes("iso-8859-1"), "utf-8");
       system.out.println(fname);
      if(filename.equalsignorecase(fname)){
       file localfile = new file(localpath + "/" + fname);
       outputstream os = new fileoutputstream(localfile);
       ftpclient.retrievefile(file.getname(), os);
       os.close();
      }
     }
     ftpclient.logout();
     flag = true;
    } catch (exception e) {
     e.printstacktrace();
    } finally{
     if(ftpclient.isconnected()){
      try {
       ftpclient.logout();
      } catch (ioexception e) {
      }
     }
    }
    return flag;
   }
}

以上所述是小编给大家介绍的java ftp上传下载删除功能实例代码,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网