>  기사  >  Java  >  Java FTP 업로드, 다운로드 및 삭제 기능 예제 코드에 대한 자세한 소개

Java FTP 업로드, 다운로드 및 삭제 기능 예제 코드에 대한 자세한 소개

黄舟
黄舟원래의
2017-03-11 11:57:291333검색

이 글에서는 주로 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 업로드, 다운로드 및 삭제 기능 예제 코드에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.