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

java实现上传和下载工具类

程序员文章站 2024-02-25 18:00:45
本文实例为大家分享了文件上传到ftp服务工具类,供大家参考,具体内容如下 直接引用此java工具类就好 import java.io.file; impo...

本文实例为大家分享了文件上传到ftp服务工具类,供大家参考,具体内容如下

直接引用此java工具类就好

import java.io.file;
import java.io.fileinputstream;
import java.io.filenotfoundexception;
import java.io.fileoutputstream;
import java.io.ioexception;
import java.io.inputstream;
import java.io.outputstream;

import org.apache.commons.net.ftp.ftp;
import org.apache.commons.net.ftp.ftpclient;
import org.apache.commons.net.ftp.ftpfile;
import org.apache.commons.net.ftp.ftpreply;

/**
 * ftp上传下载工具类
 * <p>title: ftputil</p>
 * <p>description: </p>
 * <p>company: www.itcast.com</p> 
 * @author  入云龙
 * @date  2015年7月29日下午8:11:51
 * @version 1.0
 */
public class ftputil {

  /** 
   * description: 向ftp服务器上传文件 
   * @param host ftp服务器hostname 
   * @param port ftp服务器端口 
   * @param username ftp登录账号 
   * @param password ftp登录密码 
   * @param basepath ftp服务器基础目录
   * @param filepath ftp服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basepath+filepath
   * @param filename 上传到ftp服务器上的文件名 
   * @param input 输入流 
   * @return 成功返回true,否则返回false 
   */ 
  public static boolean uploadfile(string host, int port, string username, string password, string basepath,
      string filepath, string filename, inputstream input) {
    boolean result = false;
    ftpclient ftp = new ftpclient();
    try {
      int reply;
      ftp.connect(host, port);// 连接ftp服务器
      // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接ftp服务器
      ftp.login(username, password);// 登录
      reply = ftp.getreplycode();
      if (!ftpreply.ispositivecompletion(reply)) {
        ftp.disconnect();
        return result;
      }
      //切换到上传目录
      if (!ftp.changeworkingdirectory(basepath+filepath)) {
        //如果目录不存在创建目录
        string[] dirs = filepath.split("/");
        string temppath = basepath;
        for (string dir : dirs) {
          if (null == dir || "".equals(dir)) continue;
          temppath += "/" + dir;
          if (!ftp.changeworkingdirectory(temppath)) {
            if (!ftp.makedirectory(temppath)) {
              return result;
            } else {
              ftp.changeworkingdirectory(temppath);
            }
          }
        }
      }
      //设置上传文件的类型为二进制类型
      ftp.setfiletype(ftp.binary_file_type);
      //上传文件
      if (!ftp.storefile(filename, input)) {
        return result;
      }
      input.close();
      ftp.logout();
      result = true;
    } catch (ioexception e) {
      e.printstacktrace();
    } finally {
      if (ftp.isconnected()) {
        try {
          ftp.disconnect();
        } catch (ioexception ioe) {
        }
      }
    }
    return result;
  }
  
  /** 
   * description: 从ftp服务器下载文件 
   * @param host ftp服务器hostname 
   * @param port ftp服务器端口 
   * @param username ftp登录账号 
   * @param password ftp登录密码 
   * @param remotepath ftp服务器上的相对路径 
   * @param filename 要下载的文件名 
   * @param localpath 下载后保存到本地的路径 
   * @return 
   */ 
  public static boolean downloadfile(string host, int port, string username, string password, string remotepath,
      string filename, string localpath) {
    boolean result = false;
    ftpclient ftp = new ftpclient();
    try {
      int reply;
      ftp.connect(host, port);
      // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接ftp服务器
      ftp.login(username, password);// 登录
      reply = ftp.getreplycode();
      if (!ftpreply.ispositivecompletion(reply)) {
        ftp.disconnect();
        return result;
      }
      ftp.changeworkingdirectory(remotepath);// 转移到ftp服务器目录
      ftpfile[] fs = ftp.listfiles();
      for (ftpfile ff : fs) {
        if (ff.getname().equals(filename)) {
          file localfile = new file(localpath + "/" + ff.getname());

          outputstream is = new fileoutputstream(localfile);
          ftp.retrievefile(ff.getname(), is);
          is.close();
        }
      }

      ftp.logout();
      result = true;
    } catch (ioexception e) {
      e.printstacktrace();
    } finally {
      if (ftp.isconnected()) {
        try {
          ftp.disconnect();
        } catch (ioexception ioe) {
        }
      }
    }
    return result;
  }
  
  public static void main(string[] args) {
    try { 
      fileinputstream in=new fileinputstream(new file("d:\\temp\\image\\gaigeming.jpg")); 
      boolean flag = uploadfile("192.168.25.133", 21, "ftpuser", "ftpuser", "/home/ftpuser/www/images","/2015/01/21", "gaigeming.jpg", in); 
      system.out.println(flag); 
    } catch (filenotfoundexception e) { 
      e.printstacktrace(); 
    } 
  }
}

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