检测DataInputStream字节结束不工作(Java)
我正在使用类检测DataInputStream字节结束不工作(Java),java,Java,我正在使用类DataInputStream从套接字读取数据。我必须使用readByte(不是readLine),因为输入不一定是字符串格式。问题是我必须等待流的末尾调用函数,但我无法检测到它 守则: reader = new DataInputStream(socket.getInputStream()); byte dt; String cmd = ""; while( (dt = reader.readByte()) >= 0){ cmd += (ch
DataInputStream
从套接字读取数据。我必须使用readByte(不是readLine),因为输入不一定是字符串格式。问题是我必须等待流的末尾调用函数,但我无法检测到它
守则:
reader = new DataInputStream(socket.getInputStream());
byte dt;
String cmd = "";
while( (dt = reader.readByte()) >= 0){
cmd += (char)dt;
if( /* end of the stream reached */ ){
processInput(cmd);
}
}
System.out.println("End of the loop");
问题是我不知道如何写这个if
。而且,当流结束时,没有到达循环的结尾,证明这一点的是短语“循环的结尾”从未被打印,因此它只是被卡在循环上
抛出:EOFEException-如果此输入流已到达末尾 所以,为了查看文件的结尾,必须使用
try
/catch
try {
while(true){
cmd += (char) reader.readByte();
}
} catch (EOFException e) {
// handle EOF
}
/* end of the stream reached */
processInput(cmd);
System.out.println("End of the loop");
另一种方法是使用其中一个函数,当到达文件末尾时返回
-1
,例如
int dt;
while ((dt = reader.read()) >= 0) {
// ...
}
使用另一个read(…)
函数可能更有效,因为它们返回的缓冲区充满了输入。这在
抛出:EOFEException-如果此输入流已到达末尾 所以,为了查看文件的结尾,必须使用
try
/catch
try {
while(true){
cmd += (char) reader.readByte();
}
} catch (EOFException e) {
// handle EOF
}
/* end of the stream reached */
processInput(cmd);
System.out.println("End of the loop");
另一种方法是使用其中一个函数,当到达文件末尾时返回
-1
,例如
int dt;
while ((dt = reader.read()) >= 0) {
// ...
}
使用另一个
read(…)
函数可能更有效,因为它们返回的缓冲区充满了输入。应该是这样。你确定插座的另一端是闭合的吗?它应该是闭合的。您确定插座的另一端已关闭吗?