当前位置: 移动技术网 > IT编程>开发语言>Java > Java通过FTP服务器上传下载文件的方法

Java通过FTP服务器上传下载文件的方法

2019年07月22日  | 移动技术网IT编程  | 我要评论
对于使用文件进行交换数据的应用来说,使用ftp 服务器是一个很不错的解决方案。 关于filezilla server服务器的详细搭建配置过程,详情请见filezilla

对于使用文件进行交换数据的应用来说,使用ftp 服务器是一个很不错的解决方案。

关于filezilla server服务器的详细搭建配置过程,详情请见filezilla server安装配置教程。之前有朋友说,上传大文件(几百m以上的文件)到ftp服务器时会重现无法重命名的问题,但本人亲测上传2g的文件到filezilla server都没有该问题,朋友们可以放心使用该代码。

favftputil.java

package com.favccxx.favsoft.util;
 
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目录
      ftpclient.changeworkingdirectory(pathname);
      ftpfile[] ftpfiles = ftpclient.listfiles();
      for(ftpfile file : ftpfiles){
        if(filename.equalsignorecase(file.getname())){
          file localfile = new file(localpath + "/" + file.getname());
          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;
  }
 
}

favftputiltest.java

package com.favccxx.favsoft.util;
 
import junit.framework.testcase;
 
public class favftptest extends testcase {
   
  public void testfavftputil(){
    string hostname = "127.0.0.1";
    int port = 21;
    string username = "business";
    string password = "business";
    string pathname = "business/ebook"; 
    string filename = "big.rar"; 
    string originfilename = "c:\\users\\downloads\\downloads.rar";
    favftputil.uploadfilefromproduction(hostname, port, username, password, pathname, filename, originfilename);
//   string localpath = "d:/";
     
//   favftputil.downloadfile(hostname, port, username, password, pathname, filename, localpath);
  }
 
}

以上是本文的全部内容,希望大家喜欢。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网