您的位置:首页 > 编程语言 > Java开发

java socket InputStream 笔记

2015-11-24 11:38 411 查看
这是工作中遇到的时候在网上找的答案,经过自己测试符合自己想要的答案,在此做个记录,方便以后查看。

本笔记是关于在开启socket服务时的输入输出流的read()方法的正确使用。

在写网络应用中会经常这样写 :

while ((len = inStream.read(buffer)) != -1) {
但这样往往容易发生错误或死在循环里。

解决办法:

/**
* @功能 读取流
* @param inStream
* @return 字节数组
* @throws Exception
*/
public static byte[] readStream(InputStream inStream) throws Exception {
int count = 0;
while (count == 0) {
count = inStream.available();
}
byte[] b = new byte[count];
inStream.read(b);
return b;
}
</pre><pre name="code" class="java">还有一种读取指定长度字节的方法:<pre name="code" class="java">int count = 100;
byte[] b = new byte[count];
int readCount = 0; // 已经成功读取的字节的个数
while (readCount < count) {
readCount += inStream.read(b, readCount, count - readCount);
}
</pre><pre name="code" class="java">记录结束,收工。
原文出自:<a target=_blank href="http://cuisuqiang.iteye.com/blog/1434416">点击打开链接</a>



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: