最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java通過FTP服務(wù)器上傳下載文件的方法

 更新時間:2015年07月23日 16:05:11   作者:genuinecx  
本文介紹了如何使用Apache Jakarta Commons Net(commons-net-3.3.jar)基于FileZilla Server服務(wù)器實現(xiàn)FTP服務(wù)器上文件的上傳/下載/刪除等操作,需要的朋友可以參考下

對于使用文件進行交換數(shù)據(jù)的應(yīng)用來說,使用FTP 服務(wù)器是一個很不錯的解決方案。

關(guān)于FileZilla Server服務(wù)器的詳細搭建配置過程,詳情請見FileZilla Server安裝配置教程。之前有朋友說,上傳大文件(幾百M以上的文件)到FTP服務(wù)器時會重現(xiàn)無法重命名的問題,但本人親測上傳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服務(wù)器地址
   * @param port  FTP服務(wù)器端口號
   * @param username  FTP登錄帳號
   * @param password  FTP登錄密碼
   * @param pathname  FTP服務(wù)器保存目錄
   * @param fileName  上傳到FTP服務(wù)器后的文件名稱
   * @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服務(wù)器
      ftpClient.connect(hostname, port);
      //登錄FTP服務(wù)器
      ftpClient.login(username, password);
      //是否成功登錄FTP服務(wù)器
      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服務(wù)器地址
   * @param port  FTP服務(wù)器端口號
   * @param username  FTP登錄帳號
   * @param password  FTP登錄密碼
   * @param pathname  FTP服務(wù)器保存目錄
   * @param filename  上傳到FTP服務(wù)器后的文件名稱
   * @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服務(wù)器地址
   * @param port  FTP服務(wù)器端口號
   * @param username  FTP登錄帳號
   * @param password  FTP登錄密碼
   * @param pathname  FTP服務(wù)器保存目錄
   * @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服務(wù)器地址
   * @param port  FTP服務(wù)器端口號
   * @param username  FTP登錄帳號
   * @param password  FTP登錄密碼
   * @param pathname  FTP服務(wù)器保存目錄
   * @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服務(wù)器
      ftpClient.connect(hostname, port);
      //登錄FTP服務(wù)器
      ftpClient.login(username, password);
      //驗證FTP服務(wù)器是否登錄成功
      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服務(wù)器地址
   * @param port  FTP服務(wù)器端口號
   * @param username  FTP登錄帳號
   * @param password  FTP登錄密碼
   * @param pathname  FTP服務(wù)器文件目錄
   * @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服務(wù)器
      ftpClient.connect(hostname, port);
      //登錄FTP服務(wù)器
      ftpClient.login(username, password);
      //驗證FTP服務(wù)器是否登錄成功
      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);
  }
 
}

以上是本文的全部內(nèi)容,希望大家喜歡。

相關(guān)文章

  • 使用Digester解析XML文件的三種方式小結(jié)

    使用Digester解析XML文件的三種方式小結(jié)

    Digester是apache開源項目Commons中的一個子項目,用于解析XML文檔的工具,本文為大家整理了Digester解析XML文件的三種方式,希望對大家有所幫助
    2024-01-01
  • 深入理解Java設(shè)計模式之適配器模式

    深入理解Java設(shè)計模式之適配器模式

    這篇文章主要介紹了JAVA設(shè)計模式之適配器模式的的相關(guān)資料,文中示例代碼非常詳細,供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    2021-11-11
  • SpringBoot如何讀取配置文件參數(shù)并全局使用

    SpringBoot如何讀取配置文件參數(shù)并全局使用

    這篇文章主要介紹了SpringBoot如何讀取配置文件參數(shù)并全局使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • MybatisPlus操作符和運算值詳解

    MybatisPlus操作符和運算值詳解

    在前端到后端的數(shù)據(jù)傳遞中,處理動態(tài)運算條件是一個常見的需求,本文介紹了如何在MybatisPlus中處理運算符和運算值的動態(tài)拼接問題,感興趣的朋友一起看看吧
    2024-10-10
  • java求解集合的子集的實例

    java求解集合的子集的實例

    這篇文章主要介紹了 java求解集合的子集的實例的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握這樣的方法,需要的朋友可以參考下
    2017-10-10
  • Java8中的Lambda表達式理解與使用示例詳解

    Java8中的Lambda表達式理解與使用示例詳解

    Lambda表達式是Java8引入的一種簡潔寫法,用于實現(xiàn)函數(shù)式接口,可以簡化匿名函數(shù)的代碼,本文給大家介紹Java8中的Lambda表達式理解與使用示例,感興趣的朋友一起看看吧
    2024-11-11
  • java多線程累加計數(shù)的實現(xiàn)方法

    java多線程累加計數(shù)的實現(xiàn)方法

    在多線程協(xié)作任務(wù)中,如何計算也是很重的,這篇文章主要介紹了java多線程累加計數(shù)的實現(xiàn)方法,感興趣的朋友可以了解一下
    2021-05-05
  • mybatis 在typeAliases別名時報錯的解決

    mybatis 在typeAliases別名時報錯的解決

    這篇文章主要介紹了mybatis 在typeAliases別名時報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • JAVA中Collections工具類sort()排序方法

    JAVA中Collections工具類sort()排序方法

    這篇文章主要介紹了JAVA中Collections工具類sort()排序方法,非常具有實用價值,需要的朋友可以參考下。
    2016-11-11
  • Spring?Boot整合Bootstrap的超詳細步驟

    Spring?Boot整合Bootstrap的超詳細步驟

    之前做前端開發(fā),在使用bootstrap的時候都是去官網(wǎng)下載,然后放到項目中,在頁面引用,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot整合Bootstrap的超詳細步驟,需要的朋友可以參考下
    2023-05-05

最新評論

西和县| 罗平县| 开阳县| 石城县| 星子县| 洞头县| 潍坊市| 泸溪县| 兴文县| 弥勒县| 白朗县| 永川市| 通州市| 二连浩特市| 油尖旺区| 高清| 林周县| 长宁县| 临湘市| 乐清市| 东港市| 祁连县| 遂昌县| 绵阳市| 商洛市| 龙山县| 阿坝县| 桑日县| 禹州市| 平湖市| 从化市| 攀枝花市| 德阳市| 任丘市| 涟源市| 德保县| 万州区| 万安县| 霍林郭勒市| 滦平县| 玛多县|