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个字节,我应该如何做。 展开
//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个字节,我应该如何做。 展开
1个回答
展开全部
write(byte[] data,int off,int len)
数组表示要写的数据
off表示从数组哪个位置开始写
len表示要写的长度
数组表示要写的数据
off表示从数组哪个位置开始写
len表示要写的长度
追问
请问如果我如下这样写的话,每次循环len的长度是否都是唯一了?就是说,是不是每次都会读到1024?
byte[] buff=new byte[1024];
while((len = is.read(buff,0,buff.length))!=-1){
os.write(buff);
}
追答
肯定不是啊
你有可能最后一次读到数据的不足1024
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询