关于ftp文件上传获取流对象空值问题
Posted lu-shuangbk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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 }
以上是代码,可能考虑的不够全面。请谨慎采用!
以上是关于关于ftp文件上传获取流对象空值问题的主要内容,如果未能解决你的问题,请参考以下文章