如果我使用int oneByte = dis.read(byteArray, 0, 1)
这是否意味着我只读取1个字节并将其十进制值分配给整数oneByte?
如果我想检查| (管道)字符突破循环我可以做这样的事情:
while((oneByte = dis.read(byteArray, 0, 1)) != 124)
答案 0 :(得分:7)
如果我使用int oneByte = dis.read(byteArray,0,1)这是否意味着我是 只读取1个字节,我将其十进制值分配给整数 oneByte?
不。您正在读取最多1个字节到byteArray
并接收oneByte
中读取的字节数。也许你更喜欢:
int oneByte = dis.read();
另外要小心,因为你会得到整数值...而不是小数。请注意,当您到达流的末尾时,它会返回-1
。
如果我想检查| (管道)字符可以突破循环 做这样的事情:while((oneByte = dis.read(byteArray,0,1))!= 124)
您还需要检查流的结尾(-1)。尝试更像这样的东西:
while(true) {
int oneByte = dis.read();
if(oneByte == -1 || oneByte == '|') {
break;
}
}
答案 1 :(得分:0)
不,这意味着您正在尝试读取1个字节,并且您要将实际读取的字节数分配给oneByte。因此,在这种情况下,oneByte不能大于1。如果你想检查“|” char你必须做:
dis.read(byteArray, 0, 1);
while(byteArray[0] != 124) {
dis.read(byteArray, 0, 1);
}
答案 2 :(得分:0)
答案 3 :(得分:0)
没有。 oneByte = dis.read(byteArray,0,1);
0意味着您正在读取0的偏移量(因此,如果您还没有从流中读取任何内容但这将是流的开头),则1意味着您要读取最多1个byte,byteArray是您正在读取的数组,分配给oneByte的返回值是读取的字节数(因为如果您的流包含的字节数比您尝试读取的字节少,则该数字将小于len参数)。
您可以使用read()方法中断管道:
while(dis.read() !- 124)
答案 4 :(得分:0)
dis.read(buffer)将返回读取的字节数
dis.read()将读取一个单字节并将其值返回为整数(0到255)
while循环应该像这样做你想做的事:
while ((oneByte = dis.read()) != 124)
答案 5 :(得分:0)
如果你check the Java API for InputStream,你会发现'返回' InputStream.read(byte [],int,int)的值描述为:
the total number of bytes read into the buffer, or -1 if there is
no more data because the end of the stream has been reached.
所以,不。您正在读取一个字节并存储到byteArray [0]中。 OneByte将为-1,0或1.在这种情况下,断开循环将不起作用。但是,为了记录,如果你真的一次只需要一个字节,那么InputStream.read()方法就可以了。
出于可读性的考虑,您也可能想要检查您正在寻找的确切角色。所以:
while (stream.read()!='|'){
//stuff
}
这样,任何阅读你的代码的人(未来的编码员,评分人等)都会立即知道"哦,它打破了管道角色"。