bufferedReader.readLine()读到最后发生阻塞
最近在做一个imageserver,需求简化后就是使用socket响应HTTP请求从而截取所需要的数据流,写入到服务器端的文件中,从而完成客户端将图片上传到服务器。

因为从客户端得到的数据流中,我们只希望截取其中的一部分。这样就使我们无法像经常那样边读边向文件中写入,而且在流已经读到末尾时,使用bufferedInputStream.read()>0或inputStream.read()>0作为while语句结束的判断条件在使用socket获得的数据流中是无法返回-1(因为客户端是通过浏览器提交的form表单,它无法告诉服务器的socket数据已经发送结束。因此read()方法还在等待客户端发送消息产生了阻塞)。
但是我们如果不使用bufferedInputStream.read(),我们就无法得到客户端的数据流。那么我们将如何取得数据流,并避免在读取数据时发生阻塞。
我是这样解决的:
int newread = 0;
int totalread = 0;
int contentLength = Integer.parseInt(headers.get("content-length"));
byte[] bytes = new byte[contentLength];
while (totalread < contentLength) {
newread = bufferedInputStream.read(bytes, totalread, contentLength - totalread);
totalread += newread;
}
headers:自定义的map对象用来存储之前已经解析的http请求消息中Content-Length的值
这样循环读数据可以解决两个问题:
1、避免使用read()方法造成的整个程序陷入阻塞。
2、当读的数据流较大时,还可以防止read()方法不能完全读取。
这样问题即可解决,完美!
BufferedReader的readline()踩坑
刚刚踩了一个readLine()方法的小坑
本来功能没有问题,但是根据下面的代码,我的lineStr一直为Null,看来网上的挺多这种相关的问题,但是和我的问题都不一样;
这里是有问题的代码:
BufferedReader br = new BufferedReader(new InputStreamReader(in));
// 读取结果
System.out.println("获取:"+br.readLine());//注意这里是先打印了
String lineStr = br.readLine();//然后在获取的
后面我根据看别人解释readLine方法,发现是因为readLine方法读取了一行之后,不关闭就会读取下一行,而我只需要读取一行,所以我原来的打印吧数据拿出来了,在给lineStr赋值时它去打印下一行根本没有东西,于是我把上面的打印删掉解决了这个问题
下面是修改了的:
BufferedReader br = new BufferedReader(new InputStreamReader(in));
// 读取结果
String lineStr = br.readLine();//直接赋值
这本身可能不算问题哈,但是难为了我小半天,做个记录。以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
相关推荐:
SEO快速排名实例:如何通过实战技巧提升网站排名,快速突破流量瓶颈,安徽ai跑步机企业
ChatGPT空白对话:释放创意,开启智能对话的新世界,ai重庆南坪
GPT在智能聊天机器人中的作用:重塑沟通体验,开创智能未来,百万级ai
SEO攻略:搜索引擎优化,快速提升网站排名,网站推广网站优化费用
ChatGPT故障你从未听过的真相,究竟是什么让它偶尔“失灵”?,ai 图片 矢量
用AI创作的文章算原创吗?深度背后的逻辑与意义
SEO优化如何提升网站排名,驾驭搜索引擎流量,三亚网站推广方法
seo站内优化包括什么营销,seo站内优化操作流程 ,ai 玻璃图标
SEO是什么意思?揭秘SEO的真正含义与重要性,公司推广网站询问d火18星来
SEO联系:如何通过SEO优化提升您的网络营销效果,企业营销推广获客
seo网络推广是什么,seo网络推广是什么意思 ,ai哪里注音
SEO适合-提升网站排名的关键策略,张家口品牌推广营销中心
SEO就业前景如何?打造数字时代的职业新风口,常州武进区水产网站建设
ChatGPT-4中文免费破解版:无需付费,体验最强AI助手,ai写作生成器官方下载
seo读什么书,seo是哪个专业的 ,亚洲9ai吧
SEO但是,这些常见误区你真的知道吗?,凤岗网站建设开发
怎么用AI写文章:高效创作的秘诀
ChatGPT为什么页面下拉不了?问题解析与解决方案,ai对准
好用的AI写作软件,让创作更高效
SEO元素-提升网站排名的核心要素,推广分成网站有哪些
AI一键生成原创文章,让创作更高效更轻松!
丹东抖音seo是什么,抖音seo引流 ,ai工具编写作业指导书
SEO爱站:提升网站排名,赢得流量的秘密武器,优化网站设计价格多少
ChatGPT连了外网也登不了?如何解决这一问题,重新畅享AI助力!,ai少女大瓜
ChatGPT当前不可用?背后的原因与解决方案全解析,ai propos
云推SEO:让您的网站在激烈竞争中脱颖而出,网站优化公司欢迎来电
seo竞价做的什么工作,seo 竞价 ,office智能ai
SEO优化:让你的网站在竞争中脱颖而出,临沧seo代理
ChatGPTApp怎么调大字体?提升阅读体验,让文字更清晰,推荐ai音频
seo用什么手法,seo方式 ,ai绘画飞翔
seo诊断什么意思,seo诊断a5 ,约瑟夫ai
SEO关键词的选择步骤:让你的网站在搜索引擎中脱颖而出,ai书法化
seo点击工具,seo排名点击软件推荐 ,ai狂躁
ChatGPT启动时遇到问题?快速解决方案让你畅享智能对话体验,ai如何保存logo
seo涉及什么内容,seo主要包括 ,法医使用ai
优化页面-提升用户体验与搜索引擎排名的关键,绍兴视频营销推广
用AI写一篇文章,如何提升你的写作效率与创意
SEO深度解析:如何通过深度优化提升网站排名,带来流量和转化,咸宁网站建设大概费用
ChatGPT页面无法访问?解决方案,让你轻松摆脱困扰!,ai染发颜色
“曝光量扩大,助力品牌腾飞的秘密武器”,盐山网站优化免费咨询
好用的AI智能工具,让生活与工作更高效!
ChatGPT模型进化历程:人工智能的智慧革命,ai 喷枪星空
《“查看更多”背后的秘密:让你的人生更加丰富多彩!》,宁安公司网站建设
seo规范是什么意思,seo包括哪些内容 ,AI智能破解
SEO优化是做什么的?让你的网站流量飙升的秘密武器,乳腺癌ai作用机理
SEO合同:确保您网站优化成功的关键保障,微博营销推广规则最新
优化*:打造更加高效、创新的娱乐体验,石排网站建设制作多少钱
AI提炼主要内容:如何让信息更精准、高效、易懂,女军人ai
SEO应该如何提升网站流量与排名?揭秘成功的SEO策略,肺炎疫苗推广营销
seo需要会什么,seo要会些什么 ,ai313414919