欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決調(diào)用ftpClient.retrieveFileStream(String?remoteFilePath)第二次讀取為空問題

 更新時(shí)間:2023年08月08日 10:41:19   作者:DaXianZ  
這篇文章主要給大家介紹了關(guān)于如何解決調(diào)用ftpClient.retrieveFileStream(String?remoteFilePath)第二次讀取為空問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

描述:當(dāng)讀取一個(gè)文件夾時(shí),文件夾中又存在多個(gè)文件,循環(huán)讀取時(shí),第一次調(diào)用

           InputStream inputStream = ftpClient.retrieveFileStream(String remoteFilePath)可以讀出數(shù)據(jù),當(dāng)再次調(diào)用時(shí),inputStream = null;

解決方法:在執(zhí)行完inputStream.close();方法之后,執(zhí)行ftpClient.completePendingCommand();

代碼:

public ResultData getFromFtpDataToDatabase(HttpServletRequest request){
        ResultData resultData = new ResultData(Result_Code.SUCCESS);
        String IP = Tools.processNull("***.***.***.***");
        //ftp端口是21 使用WinSCP 采用的是SSH連接端口號(hào)是22
        String PORT = Tools.processNull("21");
        String userName= Tools.processNull("userName");
        String passWord = Tools.processNull("passWord");
        String directory = Tools.processNull("");
        String upload = Tools.processNull("/upload/");
        String history = Tools.processNull("/history/");
        String filepath = "/test/";
        String paths = null;
        try {
            paths = new String(filepath.getBytes(),"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        //創(chuàng)建FTPClient對(duì)象
        FTPClient ftpClient = new FTPClient();
        try{
            //解決文件夾有中文是讀不出文件問題
            ftpClient.setAutodetectUTF8(true);
            ftpClient.connect(IP, Integer.parseInt(PORT));
            ftpClient.enterLocalPassiveMode();
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            ftpClient.setFileTransferMode(FTP.BLOCK_TRANSFER_MODE);
            ftpClient.login(userName, passWord);
            //讀取文件夾下文件
            FTPFile[] files = ftpClient.listFiles(paths);
            //獲取文件名稱
            String saveAsFileName = null;
            for (int i = 0; i < files.length; i++) {
                saveAsFileName=files[i].getName();
                //文件路徑
                String remoteFile = filepath+saveAsFileName;
                // get output stream of the response
                InputStream inputStream = ftpClient.retrieveFileStream(remoteFile);
                int available = inputStream.available();
                //將文件值轉(zhuǎn)為二進(jìn)制數(shù)據(jù)
                byte[] bytesArray = new byte[available];
                inputStream.read(bytesArray);
                //插入到數(shù)據(jù)庫中,代碼未體現(xiàn)
                inputStream.close();
                //ftpClient.getReply();
                //調(diào)用ftpClient.completePendingCommand()解決第二次讀取為空情況
                ftpClient.completePendingCommand();
}
        }catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                // 注銷FTP客戶端
                if(ftpClient!=null){
                    ftpClient.logout();
                }
            } catch (Exception e) {
                // 如果FTP注銷失敗什么也不做,忽略掉異常。
            }
            if (ftpClient.isConnected()) {
                try {
                    ftpClient.disconnect();
                } catch (IOException ex2) {
                    ex2.printStackTrace();
                }
            }
        }
        resultData.put("msg","操作成功");
        return resultData;
    }

解決方案:

調(diào)用ftpClient.completePendingCommand();
<strong>注意:</strong>FTP Server只有在接受到InputStream?執(zhí)行close方法時(shí),才會(huì)返回。所以一定先要執(zhí)行close方法。不然在第一次下載一個(gè)文件成功之后,之后再次獲取inputStream 就會(huì)返回null

存在問題:使用inputStream.available();進(jìn)行讀取數(shù)據(jù)時(shí),由于時(shí)網(wǎng)絡(luò)傳輸,可能會(huì)導(dǎo)致數(shù)據(jù)的丟失,讀取的數(shù)據(jù)長度也會(huì)有限制,后續(xù)做改正.........

到此這篇關(guān)于解決調(diào)用ftpClient.retrieveFileStream(String remoteFilePath)第二次讀取為空問題的文章就介紹到這了,更多相關(guān)ftpClient.retrieveFileStream(String remoteFilePath)讀取為空內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 判斷字符串a(chǎn)和b是否互為旋轉(zhuǎn)詞

    Java 判斷字符串a(chǎn)和b是否互為旋轉(zhuǎn)詞

    本篇文章主要介紹了判斷字符串a(chǎn)和b是否互為旋轉(zhuǎn)詞的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-05-05
  • Mybatis-Plus使用p6spy對(duì)SQL性能進(jìn)行監(jiān)控的方法

    Mybatis-Plus使用p6spy對(duì)SQL性能進(jìn)行監(jiān)控的方法

    這篇文章主要介紹了Mybatis-Plus使用p6spy對(duì)SQL性能進(jìn)行監(jiān)控的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java中@RestController注解使用

    Java中@RestController注解使用

    在Spring框架中,@RestController注解是一個(gè)非常重要的注解,它用于將一個(gè)類標(biāo)記為RESTful風(fēng)格的控制器,本文就來介紹一下Java中@RestController注解使用,感興趣的可以了解一下
    2023-11-11
  • Java Guava排序器Ordering原理及代碼實(shí)例

    Java Guava排序器Ordering原理及代碼實(shí)例

    這篇文章主要介紹了Java Guava排序器Ordering原理及代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java語言class類用法及泛化(詳解)

    Java語言class類用法及泛化(詳解)

    這篇文章主要介紹了Java語言class類用法及泛化(詳解),大家都知道Java程序在運(yùn)行過程中,對(duì)所有的對(duì)象今夕類型標(biāo)識(shí),也就是RTTI。這項(xiàng)信息記錄了每個(gè)對(duì)象所屬的類,需要的朋友可以參考下
    2015-07-07
  • Spring boot+mybatis+thymeleaf 實(shí)現(xiàn)登錄注冊(cè)增刪改查功能的示例代碼

    Spring boot+mybatis+thymeleaf 實(shí)現(xiàn)登錄注冊(cè)增刪改查功能的示例代碼

    這篇文章主要介紹了Spring boot+mybatis+thymeleaf 實(shí)現(xiàn)登錄注冊(cè)增刪改查功能的示例代碼,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java final 修飾符知識(shí)點(diǎn)總結(jié)(必看篇)

    Java final 修飾符知識(shí)點(diǎn)總結(jié)(必看篇)

    下面小編就為大家?guī)硪黄狫ava final 修飾符知識(shí)點(diǎn)總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • 基于Java+SpringBoot實(shí)現(xiàn)人臉識(shí)別搜索

    基于Java+SpringBoot實(shí)現(xiàn)人臉識(shí)別搜索

    人臉識(shí)別搜索技術(shù)作為現(xiàn)代計(jì)算機(jī)視覺領(lǐng)域的重要研究方向之一,已經(jīng)在多個(gè)領(lǐng)域展現(xiàn)出巨大的應(yīng)用潛力,隨著信息技術(shù)的飛速發(fā)展,人臉識(shí)別搜索在多個(gè)領(lǐng)域得到了廣泛關(guān)注和應(yīng)用,本文旨在探討人臉識(shí)別搜索技術(shù)的背景、原理以及其在實(shí)際應(yīng)用中的意義和挑戰(zhàn)
    2023-08-08
  • Java進(jìn)階之SPI機(jī)制詳解

    Java進(jìn)階之SPI機(jī)制詳解

    Java SPI機(jī)制在很多大型中間建碼,例如Dubbo中均有采用,屬于高級(jí)Java開發(fā)的進(jìn)階必備知識(shí)點(diǎn),務(wù)必要求掌握.文中有非常詳細(xì)的代碼示例及解釋,需要的朋友可以參考下
    2021-05-05
  • Spring事務(wù)處理流程和原理詳解

    Spring事務(wù)處理流程和原理詳解

    這篇文章主要介紹了Spring事務(wù)處理流程和原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論