Java read(buf[]) 是每一次都会读到buf字节么?

byte[]b=newbyte[1024];//intlen;表示成功读取的字节数的个数//FileInputStream可以使用read(byte[]b)每次读取多个(... byte[] b = new byte[1024];
//int len;表示成功读取的字节数的个数
//FileInputStream可以使用read(byte[] b )每次读取多个(b.length)字节数据(每次最多读取多少个)到byte数组当中
while((len = is.read(b))!=-1){
System.out.println(“len=”+len);
os.write(b);
}

假设我有一个长度为10240字节的流
请问这里每次while循环 都会读到len个长度的1024字节么?

双方进行socket交互的时候,会存在对面没有来得及write,而我已经read完了再等待么?还是说,read和write有因果关闭,流这个东西好抽象啊。假设A要往输出流写出10240长度的字节数组,那么请问write(buff[])之后,10240是“瞬间"在流内么,我的意思是,假设write(buff)后的那一刹那,B从流中read(buff[]) ,假设我缓存区设置得足够大的时候,如buff[10240], 那我也是瞬间一次性读到10240么?

假设A传递给B一个报文(头和body 假设共1000字节),若我想先读前面40个字节,我应该如何做。
展开
 我来答
等祢看流星雨
2015-05-01 · TA获得超过231个赞
知道小有建树答主
回答量:261
采纳率:0%
帮助的人:199万
展开全部
write(byte[] data,int off,int len)
数组表示要写的数据
off表示从数组哪个位置开始写
len表示要写的长度
追问
请问如果我如下这样写的话,每次循环len的长度是否都是唯一了?就是说,是不是每次都会读到1024?
byte[] buff=new byte[1024];
while((len = is.read(buff,0,buff.length))!=-1){
os.write(buff);
}
追答
肯定不是啊
你有可能最后一次读到数据的不足1024
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式