黑马程序员技术交流社区
标题:
一个IO流读取问题困扰很久了 坐等求解
[打印本页]
作者:
糖伯貓
时间:
2014-2-9 20:43
标题:
一个IO流读取问题困扰很久了 坐等求解
本帖最后由 糖伯貓 于 2014-2-9 20:45 编辑
TCP服务器端:
复制代码
ServerSocket ss = new ServerSocket(5000);
Socket s = ss.accept();
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
while((len = in.read(buf))!=-1){
System.out.println(len);
System.out.println(new String(buf,0,len));
复制代码
这里while循环里面的in.read(buf)返回的是int型值,我打印了下是字符串的长度,这我也点不理解了,再比较这个长度值是否等于-1这个结束标记?
作者:
糖伯貓
时间:
2014-2-9 20:44
代码没贴上来
ServerSocket ss = new ServerSocket(5000);
Socket s = ss.accept();
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
while((len = in.read(buf))!=-1){
System.out.println(len);
System.out.println(new String(buf,0,len));
复制代码
作者:
李金中
时间:
2014-2-9 21:04
in.read() 方法 当读取到结束时,该方法返回-1;
作者:
李金中
时间:
2014-2-9 21:07
当 未读到结束时 ,in.read()方法返回的是你这次读取的实际长度。 很明显,用 while((len = in.read(buf))!=-1)可以达到循环读取的目的,直至读取结束,因为此时in.read()返回-1,退出while循环了就。
我解释的是你要问的不。。。
作者:
倉促、尋找你
时间:
2014-2-9 21:57
这里的-1是,当你读取数据读不到的时候,就会返回-1告诉你,已经没有数据可以读了。
作者:
guhaibin
时间:
2014-2-9 22:22
in.read()的意思是读到没有数据可读时,返回-1,说明读结束了
作者:
↑↓ME→←
时间:
2014-2-9 22:43
in.read(buf)方法返回的是存储在buf缓冲区数组中的实际长度,最大等于buf的长度,当文件读取结束后返回-1,循环结束
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2