码迷,mamicode.com
首页 > Web开发 > 详细

关于ftp文件上传获取流对象空值问题

时间:2018-06-03 12:33:49      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:跟踪   自己   ret   new   rac   关于   ftpclient   估计   解决   

 

前些天写好的工具类,后来从新测试的时候出现的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     }

以上是代码,可能考虑的不够全面。请谨慎采用!

关于ftp文件上传获取流对象空值问题

标签:跟踪   自己   ret   new   rac   关于   ftpclient   估计   解决   

原文地址:https://www.cnblogs.com/lu-shuangbk/p/9128129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!