首页 > 代码库 > ServletInputStream 和FileInputStream 的区别 ServletInputStream取不到数据解决方法
ServletInputStream 和FileInputStream 的区别 ServletInputStream取不到数据解决方法
最近做项目遇到的问题,现在一下:
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 其他服务器不知道有没有这种情况
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。