Java FTP アップロード、ダウンロード、削除関数のサンプル コードの詳細な紹介

黄舟
リリース: 2017-03-11 11:57:29
オリジナル
1388 人が閲覧しました

この記事では主に 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート