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

JAVA技術(shù)實(shí)現(xiàn)上傳下載文件到FTP服務(wù)器(完整)

 更新時(shí)間:2015年07月28日 16:29:29   投稿:mrr  
這篇文章主要介紹了JAVA技術(shù)實(shí)現(xiàn)上傳下載文件到FTP服務(wù)器(完整),本文使用 Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服務(wù)器實(shí)現(xiàn)FTP服務(wù)器上文件的上傳/下載/刪除等操作,需要的朋友可以參考下

具體詳細(xì)介紹請(qǐng)看下文:

在使用文件進(jìn)行交互數(shù)據(jù)的應(yīng)用來(lái)說(shuō),使用FTP服務(wù)器是一個(gè)很好的選擇。本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服務(wù)器實(shí)現(xiàn)FTP服務(wù)器上文件的上傳/下載/刪除等操作。

關(guān)于FileZilla Server服務(wù)器的詳細(xì)搭建配置過(guò)程,詳情請(qǐng)見(jiàn) FileZilla Server安裝配置教程 。之前有朋友說(shuō),上傳大文件(幾百M(fèi)以上的文件)到FTP服務(wù)器時(shí)會(huì)重現(xiàn)無(wú)法重命名的問(wèn)題,但本人親測(cè)上傳2G的文件到FileZilla Server都沒(méi)有該問(wèn)題,朋友們可以放心使用該代碼。

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ù)器端口號(hào)
 * @param username FTP登錄帳號(hào)
 * @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;
 }
 
 
 /**
 * 上傳文件(可對(duì)文件進(jìn)行重命名)
 * @param hostname FTP服務(wù)器地址
 * @param port FTP服務(wù)器端口號(hào)
 * @param username FTP登錄帳號(hào)
 * @param password FTP登錄密碼
 * @param pathname FTP服務(wù)器保存目錄
 * @param filename 上傳到FTP服務(wù)器后的文件名稱
 * @param originfilename 待上傳文件的名稱(絕對(duì)地址)
 * @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;
 }
 
 /**
 * 上傳文件(不可以進(jìn)行文件的重命名操作)
 * @param hostname FTP服務(wù)器地址
 * @param port FTP服務(wù)器端口號(hào)
 * @param username FTP登錄帳號(hào)
 * @param password FTP登錄密碼
 * @param pathname FTP服務(wù)器保存目錄
 * @param originfilename 待上傳文件的名稱(絕對(duì)地址)
 * @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ù)器端口號(hào)
 * @param username FTP登錄帳號(hào)
 * @param password FTP登錄密碼
 * @param pathname FTP服務(wù)器保存目錄
 * @param filename 要?jiǎng)h除的文件名稱
 * @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);
 //驗(yàn)證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ù)器端口號(hào)
 * @param username FTP登錄帳號(hào)
 * @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);
 //驗(yàn)證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);
 }

}

以上就是JAVA通過(guò)FTP上傳下載文件的完整代碼,希望對(duì)大家有所幫助。

相關(guān)文章

  • SpringMVC實(shí)現(xiàn)controller中獲取session的實(shí)例代碼

    SpringMVC實(shí)現(xiàn)controller中獲取session的實(shí)例代碼

    本篇文章主要介紹了SpringMVC實(shí)現(xiàn)controller中獲取session的實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-02-02
  • IDEA實(shí)現(xiàn)遠(yuǎn)程調(diào)試步驟詳解

    IDEA實(shí)現(xiàn)遠(yuǎn)程調(diào)試步驟詳解

    這篇文章主要介紹了IDEA實(shí)現(xiàn)遠(yuǎn)程調(diào)試步驟詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java實(shí)現(xiàn)高效的枚舉元素集合示例

    java實(shí)現(xiàn)高效的枚舉元素集合示例

    Set是Java集合類的重要組成部分,它用來(lái)存儲(chǔ)不能重復(fù)的對(duì)象。枚舉類型也要求其枚舉元素各不相同??雌饋?lái)枚舉類型和集合是很相似的。然而枚舉類型中的元素不能隨意的增加、刪除,作為集合而言,枚舉類型非常不實(shí)用。EnumSet是專門為enum實(shí)現(xiàn)的集合類,本實(shí)例將演示其用法
    2014-03-03
  • SpringBoot全局異常處理與定制404頁(yè)面的方法

    SpringBoot全局異常處理與定制404頁(yè)面的方法

    這篇文章主要介紹了SpringBoot全局異常處理與定制404頁(yè)面的相關(guān)資料,本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2007-09-09
  • Java中Lombok常用注解分享

    Java中Lombok常用注解分享

    以前的Java項(xiàng)目中充斥了太多不友好的代碼,這些代碼不僅沒(méi)有什么技術(shù)含量,還影響代碼的美觀,所以Lombok應(yīng)運(yùn)而生了。本文和大家分享了一些Java中Lombok常用注解,需要的可以了解一下
    2023-04-04
  • Java探索之Feign入門使用詳解

    Java探索之Feign入門使用詳解

    這篇文章主要介紹了Java探索之Feign入門使用詳解,關(guān)于feign,我也是第一次遇到,于是在網(wǎng)上搜集了相關(guān)文章,這篇比較詳細(xì),介紹了其簡(jiǎn)介,選擇feign的原因以及其他相關(guān)內(nèi)容,需要的朋友可以參考下。
    2017-10-10
  • java 實(shí)現(xiàn)回調(diào)代碼實(shí)例

    java 實(shí)現(xiàn)回調(diào)代碼實(shí)例

    本文主要介紹Java的回調(diào)機(jī)制,并附實(shí)例代碼以供大家參考學(xué)習(xí),有需要的小伙伴可以看下
    2016-07-07
  • Java中接口的多態(tài)詳解

    Java中接口的多態(tài)詳解

    大家好,本篇文章主要講的是Java中接口的多態(tài)詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • SpringBoot如何使用redis

    SpringBoot如何使用redis

    文章主要介紹了如何在Spring Boot項(xiàng)目中配置Redis并解決亂碼問(wèn)題,同時(shí)提供了使用Redis操作不同類型數(shù)據(jù)(如String、List、Hash、Set、ZSet和Bitmap)的代碼示例
    2025-03-03
  • spring多個(gè)事務(wù)管理器踩坑及解決

    spring多個(gè)事務(wù)管理器踩坑及解決

    這篇文章主要介紹了spring多個(gè)事務(wù)管理器踩坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評(píng)論

南京市| 镇平县| 文山县| 宝丰县| 昂仁县| 肥乡县| 洮南市| 同德县| 松溪县| 海林市| 承德县| 海盐县| 建昌县| 怀远县| 岑巩县| 信宜市| 冷水江市| 库尔勒市| 黄浦区| 仪陇县| 武乡县| 怀宁县| 博罗县| 荣成市| 吴川市| 祥云县| 无极县| 桐柏县| 叶城县| 舒城县| 阿城市| 阿合奇县| 巴中市| 昌邑市| 永嘉县| 长泰县| 老河口市| 秀山| 宜黄县| 青河县| 沙湾县|