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

详细介绍Java FTP上传下载删除功能实例代码

程序员文章站 2022-05-05 20:17:23
...
这篇文章主要介绍了Java FTP上传下载删除功能实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下

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

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上传下载删除功能实例代码的详细内容,更多请关注其它相关文章!