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

使用hutool進(jìn)行ftp文件下載和上傳詳細(xì)代碼示例

 更新時間:2024年02月06日 08:29:25   作者:qq_41273205  
在開發(fā)Java項目時,FTP客戶端是經(jīng)常需要使用的工具,因為FTP協(xié)議在文件傳輸方面有著廣泛的應(yīng)用,這篇文章主要給大家介紹了關(guān)于使用hutool進(jìn)行ftp文件下載和上傳的相關(guān)資料,需要的朋友可以參考下

1 引入依賴

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.15</version>
</dependency>

<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.6</version>
</dependency>

2 工具類

package ftp;

import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.ftp.Ftp;
import cn.hutool.extra.ftp.FtpMode;
import org.apache.commons.lang.StringUtils;

import java.io.File;
import java.io.IOException;

/**
 * @author : 
 * @description :
 * @date : 2023/3/10 14:42
 */
public class FtpUtil {
    /**
     * 下載ftp服務(wù)器上的文件到本地
     * @param remoteFile
     * @param localFile
     * @param ip
     * @param port
     * @param username
     * @param password
     * @param ftpMode
     * @return 成功則返回字符串:success
     */
    public static String download(String remoteFile, String localFile, String ip, Integer port, String username, String password, FtpMode ftpMode) {
        if(StringUtils.isBlank(localFile)) {
            return "本地保存路徑及名稱不能為空";
        }
        File lFile = FileUtil.file(localFile);
        Ftp ftp = null;
        try {
            //匿名登錄(無需帳號密碼的FTP服務(wù)器)
            ftp = new Ftp(ip,port == null ? 21 : port,username,password);
            if(ftpMode != null) {
                ftp.setMode(ftpMode);
            }
            ftp.download(remoteFile, lFile);
        } catch (Exception e) {
            return e.getMessage();
        } finally {
            //關(guān)閉連接
            try {
                if(ftp != null)  ftp.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        if(lFile.exists() && lFile.length() > 0) {
            return "success";
        } else {
            lFile.delete();
            return "download failure,"+ remoteFile +" maybe not exists !!";
        }
    }

    /**
     * 此方法不指定上傳后保存的名稱, 則按本地文件的名稱保存
     * @param remoteDir
     * @param localFile
     * @param ip
     * @param port
     * @param username
     * @param password
     * @return 成功則返回字符串:success
     */
    public static String upload(String remoteDir, String localFile, String ip, Integer port, String username, String password, FtpMode ftpMode) {
        return upload(remoteDir, null, localFile, ip, port, username, password, ftpMode);
    }

    /**
     *
     * @param remoteDir 上傳的ftp目錄
     * @param remoteFileName  保存到ftp服務(wù)器上的名稱
     * @param localFile 本地文件全名稱
     * @param ip
     * @param port
     * @param username
     * @param password
     * @return 成功則返回字符串:success
     */
    public static String upload(String remoteDir, String remoteFileName, String localFile, String ip, Integer port, String username, String password, FtpMode ftpMode) {
        if(StringUtils.isBlank(localFile)) {
            return "本地文件名稱不能為空";
        }
        File lFile = FileUtil.file(localFile);
        if(!lFile.exists()) {
            return "本地文件不存在";
        }
        Ftp ftp = null;
        try {
            //匿名登錄(無需帳號密碼的FTP服務(wù)器)
            ftp = new Ftp(ip,port == null ? 21 : port,username,password);
            if(ftpMode != null) {
                ftp.setMode(ftpMode);
            }
            if(StringUtils.isBlank(remoteFileName)) {
                ftp.upload(remoteDir, lFile);
            } else {
                ftp.upload(remoteDir, remoteFileName, lFile);
            }
        } catch (Exception e) {
            return e.getMessage();
        } finally {
            //關(guān)閉連接
            try {
                if(ftp != null)  ftp.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        return "success";
    }
}

3 測試

public class FtpTest {

    public static void main(String[] args) {
        //上傳文件到ftp
        String result = FtpUtil.upload("opt/upload","fff.zip", "D:/STM.zip", "192.168.68.55", 21, "ftpuser", "ftpuser!@#123", null);
        System.out.println(result);

        //下載遠(yuǎn)程文件
        String result2 = FtpUtil.download("opt/upload/fff.zip", "D:/bbb.zip", "192.168.68.55", 21, "ftpuser", "ftpuser!@#123", null);
        System.out.println(result2);

    }
}

總結(jié) 

到此這篇關(guān)于使用hutool進(jìn)行ftp文件下載和上傳的文章就介紹到這了,更多相關(guān)hutool下載和上傳ftp文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring boot和spring cloud之間的版本關(guān)系

    spring boot和spring cloud之間的版本關(guān)系

    這篇文章主要介紹了spring boot和spring cloud之間的版本關(guān)系,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • idea解決Git分支合并沖突問題

    idea解決Git分支合并沖突問題

    這篇文章主要介紹了idea解決Git分支合并沖突問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 如何通過Java監(jiān)聽MySQL數(shù)據(jù)的變化

    如何通過Java監(jiān)聽MySQL數(shù)據(jù)的變化

    對于二次開發(fā)來說,很大一部分就找找文件和找數(shù)據(jù)庫的變化情況,下面這篇文章主要給大家介紹了關(guān)于如何通過Java監(jiān)聽MySQL數(shù)據(jù)的變化的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • java面試常見問題---ConcurrentHashMap

    java面試常見問題---ConcurrentHashMap

    ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見問題---ConcurrentHashMap知識,一起看看吧
    2021-06-06
  • SpringBoot整合Canal與RabbitMQ監(jiān)聽數(shù)據(jù)變更記錄

    SpringBoot整合Canal與RabbitMQ監(jiān)聽數(shù)據(jù)變更記錄

    這篇文章主要介紹了SpringBoot整合Canal與RabbitMQ監(jiān)聽數(shù)據(jù)變更記錄,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Java.lang.Long.parseLong()方法詳解及示例

    Java.lang.Long.parseLong()方法詳解及示例

    這個java.lang.Long.parseLong(String s) 方法解析字符串參數(shù)s作為有符號十進(jìn)制長,下面這篇文章主要給大家介紹了關(guān)于Java.lang.Long.parseLong()方法詳解及示例的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 如何通過JVM角度談?wù)凧ava的clone操作

    如何通過JVM角度談?wù)凧ava的clone操作

    java中僅有的創(chuàng)建對象的兩種方式:①.使用new操作符創(chuàng)建對象;②.使用clone方法復(fù)制對象。下面這篇文章主要通過JVM角度給大家詳細(xì)談?wù)凧ava的clone操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-06-06
  • Java多線程的sleep休眠的實現(xiàn)

    Java多線程的sleep休眠的實現(xiàn)

    本文主要介紹了Java多線程的sleep休眠的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java中避免NullPointerException的方法總結(jié)

    Java中避免NullPointerException的方法總結(jié)

    這篇文章主要介紹了Java中避免NullPointerException的方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Hibernate單表操作實例解析

    Hibernate單表操作實例解析

    這篇文章主要介紹了Hibernate單表操作實例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02

最新評論

凤山县| 丰县| 土默特左旗| 平顶山市| 雷州市| 齐河县| 敖汉旗| 长白| 彭泽县| 蒙山县| 马边| 永寿县| 双牌县| 白银市| 玉溪市| 襄樊市| 本溪市| 赤壁市| 株洲市| 清远市| 潞城市| 淄博市| 内丘县| 包头市| 治县。| 炎陵县| 淮北市| 南充市| 小金县| 内乡县| 深州市| 张家港市| 清徐县| 临颍县| 高安市| 阆中市| 长乐市| 新丰县| 永福县| 衡水市| 壤塘县|