码迷,mamicode.com
首页 > 其他好文 > 详细

ServletInputStream 和FileInputStream 的区别 ServletInputStream取不到数据解决方法

时间:2014-06-03 05:09:54      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:servlet   服务器   tomcat   缓存   

最近做项目遇到的问题,现在一下:

1:实现文件上传下载 如果用到Tomcat  和HttpServlet,那么我们就要获取上传的字节流ServletInputStream。下面说一下用ServletInputStream要注意的地方。

(1) 要想到的ServletInputStream中的数据,必须要从缓存区读出来。

ServletInputStream ServletInputStream = request.getInputStream();
byte [] a =new byte[ServletInputStream.available()];
ServletInputStream.read(a);

这些代码看似没有问题,其实这样是读不到数据的,因为 ServletInputStream 被Tomcat做了优化,ServletInputStream.available()是得不到数据长度的,这样得到的就是一个 字节数,我们再看一下FileInputStream

InputStream InputStream = new FileInputStream();
byte [] a =new byte[InputStream .available()];
ServletInputStream.read(a);

这段代码是可以读到数据的。不用我说,大家 可以看到区别了吧。


2:要想从Servlet中获取数据 那么我们就要用while循环去从缓存区去取数据。

注:服务器用的是Tomcat 其他服务器不知道有没有这种情况



ServletInputStream 和FileInputStream 的区别 ServletInputStream取不到数据解决方法,布布扣,bubuko.com

ServletInputStream 和FileInputStream 的区别 ServletInputStream取不到数据解决方法

标签:servlet   服务器   tomcat   缓存   

原文地址:http://blog.csdn.net/a956959099/article/details/27567357

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