將sftp文件無法保存到本地及無法刪除本地文件問題

一、問題

最近在實現業務功能的時候遇到二個問題:
1、將sftp文件無法保存到本地
2、無法刪除本地文件問題

二、問題分析

問題1由於在代碼中沒有對應的父級目錄,導致創建本地文件失敗
問題2由於FileOutputStream 在寫文件後,io沒有關閉, 導致文件一直有引用而無法刪除

三、解決方案

  public void download(String directory, String downloadFile, String saveDirectory,ChannelSftp sftp) throws Exception {
        FileOutputStream  fileOutputStream = null;
       try{
           String saveFile = saveDirectory + File.separator + downloadFile;
           sftp.cd(directory);
           File dir = new File(saveDirectory);
           File file = new File(saveFile);
           if (!dir.exists()){
            //創建目錄,注意:不要用mkdir,因爲如果沒有父級目錄,創建目錄的時候會失敗
               dir.mkdirs();
           }
           if(!file.exists()){
              //創建文件
               file.createNewFile();
           }
           fileOutputStream =  new FileOutputStream(file);
           sftp.get(downloadFile,fileOutputStream );
       }finally {
           if (fileOutputStream!=null){
                //關閉io
                fileOutputStream.close();
           }
       }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章