關於ftp文件上傳獲取流對象空值問題


 

前些天寫好的工具類,后來從新測試的時候出現的ftp.storeFileStream獲得不到流對象。切出現等待時間的問題。

跟蹤了代碼,登錄沒有問題!進入ftp看了一些目錄結構和文件。發現文件已經創建,但是里面沒有內容。估計就是流對象無法寫入內容的原因。

針對這個問題去網上查看了一些資料,再對比一些自己的代碼。發現自己在登陸后沒有做退出和斷開連接處理,加上這些后問題解決了。

下面是代碼:

 

 1 public static boolean putFileToFtp(File file,String newFilePathName){
 2         boolean flag = false;
 3         //創建一個ftp客戶端
 4         FTPClient ftp = getClient();
 5          try {
 6              //登錄
 7                 ftp.connect(REHOSTNAME, Integer.parseInt(REPORT));
 8                 flag = ftp.login(REUSERNAME, REPASSWORD);
 9                 if(flag){
10                     //設置上傳目錄 
11                     ftp.enterLocalPassiveMode();
12                     ftp.setCharset(Charset.forName("UTF-8"));
13                     ftp.setControlEncoding("UTF-8");
14                   //設置文件類型(二進制) 
15                     ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
16                   //文件流輸出
17                     OutputStream os = ftp.storeFileStream(RETRUMPETHESERVER+"/"+newFilePathName);
18                     if(os!=null){
19                         FileInputStream fis = new FileInputStream(file);
20                         byte[] b = new byte[1024];
21                         int len = 0;
22                         while ((len = fis.read(b)) != -1) {
23                             os.write(b,0,len);
24                         }
25                         fis.close();
26                         os.close();
27                         ftp.logout();
28                         flag = true;
29                     }else{
30                         ftp.logout();
31                         return false;
32                     }
33                 }else{
34                     ftp.disconnect();
35                     return false;
36                 }
37                 
38                 
39             } catch (IOException e) {
40                 e.printStackTrace();
41                 return false;
42             } finally { 
43                 try { 
44                     ftp.disconnect(); 
45                 } catch (IOException e) { 
46                     e.printStackTrace(); 
47                     throw new RuntimeException("關閉FTP連接發生異常!", e); 
48                 } 
49             }
50          return flag;  
51     }

以上是代碼,可能考慮的不夠全面。請謹慎采用!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM