国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 15:04:29
字體:
來源:轉載
供稿:網友

對于使用文件進行交換數據的應用來說,使用FTP 服務器是一個很不錯的解決方案。

關于FileZilla Server服務器的詳細搭建配置過程,詳情請見FileZilla Server安裝配置教程。之前有朋友說,上傳大文件(幾百M以上的文件)到FTP服務器時會重現無法重命名的問題,但本人親測上傳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服務器地址   * @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目錄      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);  } }

以上是本文的全部內容,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 同仁县| 东明县| 宜君县| 巴林左旗| 曲松县| 双江| 林甸县| 广安市| 康定县| 手机| 左权县| 江陵县| 区。| 峨眉山市| 壤塘县| 长海县| 大洼县| 九台市| 甘孜| 米脂县| 潮安县| 常熟市| 福泉市| 丰原市| 湘潭市| 自治县| 高青县| 钟祥市| 赣榆县| 朝阳市| 东丰县| 吴桥县| 天气| 雷波县| 新密市| 育儿| 新巴尔虎右旗| 堆龙德庆县| 泗阳县| 绍兴县| 石楼县|