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

解決調(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ù)長(zhǎng)度也會(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)文章

  • 如何更優(yōu)雅的關(guān)閉java文本、網(wǎng)絡(luò)等資源

    如何更優(yōu)雅的關(guān)閉java文本、網(wǎng)絡(luò)等資源

    這篇文章主要介紹了如何更優(yōu)雅的關(guān)閉java文本、網(wǎng)絡(luò)等資源,在 finally 的關(guān)閉代碼中,還要再來一個(gè) try/catch,看著是不是很難受,很不優(yōu)雅,很想干掉這個(gè) finally!,需要的朋友可以參考下
    2019-06-06
  • Java利用Apache POI實(shí)現(xiàn)Excel文件讀寫操作

    Java利用Apache POI實(shí)現(xiàn)Excel文件讀寫操作

    Apache POI是一個(gè)用于讀寫Microsoft Office文件格式的Java庫,可以用來讀取或?qū)懭隕xcel文件,下面小編就和大家詳細(xì)講講Java借助Apache POI讀寫Excel的詳細(xì)代碼吧
    2026-02-02
  • Java中equals和hashcode用法

    Java中equals和hashcode用法

    `equals`和`hashCode`方法在Java中密切相關(guān),必須保持一致性,如果兩個(gè)對(duì)象通過`equals`方法相等,它們的`hashCode`也必須相同,這對(duì)于基于哈希的數(shù)據(jù)結(jié)構(gòu)至關(guān)重要,因?yàn)檫@些結(jié)構(gòu)依賴哈希值進(jìn)行快速查找和存儲(chǔ),為了減少哈希沖突
    2025-01-01
  • Java基礎(chǔ)知識(shí)精通注釋與數(shù)據(jù)類型及常量與變量

    Java基礎(chǔ)知識(shí)精通注釋與數(shù)據(jù)類型及常量與變量

    本文給大家介紹了Java的注釋與數(shù)據(jù)類型和常量變量,這些都是最基礎(chǔ)的知識(shí),文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Windows下Java+MyBatis框架+MySQL的開發(fā)環(huán)境搭建教程

    Windows下Java+MyBatis框架+MySQL的開發(fā)環(huán)境搭建教程

    這篇文章主要介紹了Windows下Java+MyBatis框架+MySQL的開發(fā)環(huán)境搭建教程,Mybatis對(duì)普通SQL語句的支持非常好,需要的朋友可以參考下
    2016-04-04
  • mybatis-plus多表聯(lián)查join的實(shí)現(xiàn)

    mybatis-plus多表聯(lián)查join的實(shí)現(xiàn)

    本文主要介紹了mybatis-plus多表聯(lián)查join的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Java中使用注解獲取和改變Bean的指定變量值

    Java中使用注解獲取和改變Bean的指定變量值

    Java有時(shí)需要通過自定義注解,獲取某Bean的某變量的值,根據(jù)業(yè)務(wù)要求處理數(shù)據(jù),然后再把新值設(shè)置回Bean的同一變量中,這篇文章介紹了使用注解獲取和改變Bean變量值的過程,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • 解決MyEclipse中Maven設(shè)置jdk版本jdk1.8報(bào)錯(cuò)問題

    解決MyEclipse中Maven設(shè)置jdk版本jdk1.8報(bào)錯(cuò)問題

    今天安裝了jdk1.8、tomcat8、和maven3.5.2,弄好后在myeclipse新建了一個(gè)maven項(xiàng)目,項(xiàng)目默認(rèn)是jdk1.5,改成jdk1.8后項(xiàng)目報(bào)錯(cuò)
    2018-10-10
  • java讀取圖片并轉(zhuǎn)化為二進(jìn)制字符串的實(shí)現(xiàn)方法

    java讀取圖片并轉(zhuǎn)化為二進(jìn)制字符串的實(shí)現(xiàn)方法

    這篇文章主要介紹了java讀取圖片并轉(zhuǎn)化為二進(jìn)制字符串的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • SpringBoot+Docker+K8s云原生部署全流程(從零到發(fā)布)

    SpringBoot+Docker+K8s云原生部署全流程(從零到發(fā)布)

    本文詳解了SpringBoot項(xiàng)目從開發(fā)到基于Docker容器化,再通過K8s實(shí)現(xiàn)云原生部署的全流程,涵蓋環(huán)境搭建、鏡像構(gòu)建、服務(wù)部署及CI/CD自動(dòng)化,提升應(yīng)用部署效率與可維護(hù)性,需要的朋友跟隨小編一起學(xué)習(xí)吧
    2025-08-08

最新評(píng)論

屏边| 泸溪县| 榆社县| 九江市| 鹤壁市| 东兰县| 牙克石市| 德州市| 阿拉尔市| 平湖市| 交城县| 班玛县| 庆安县| 岑巩县| 谷城县| 武胜县| 洛宁县| 齐齐哈尔市| 雅安市| 和平区| 新泰市| 桂阳县| 依兰县| 揭阳市| 罗平县| 临泉县| 巨野县| 凤庆县| 黄龙县| 皮山县| 徐闻县| 张家川| 冕宁县| 吉首市| 依兰县| 吉安市| 临湘市| 胶州市| 肇源县| 海门市| 瓦房店市|