【发布时间】:2014-11-11 21:45:06
【问题描述】:
我正在制作一个简单的 TCP/IP Socket 应用程序
这样做有什么不同:
DataInputStream in = new DataInputStream(clientSocket.getInputStream());
byte[] buffer = new byte[100];
in.readFully(buffer);
相对于这样做:
DataInputStream in = new DataInputStream(clientSocket.getInputStream());
byte[] buffer = new byte[100];
in.read(buffer);
我查看了文档,它们的描述完全相同。 readFully() 和 read()
那么我可以假设它是同一件事吗?
【问题讨论】:
-
你想如何处理 EOF(意味着当套接字上没有更多字节要读取时)?再次查看两者的定义,而不仅仅是描述。一个返回值,一个抛出异常。
-
@scrappedcola 哦,好的,我现在明白了。所以基本上,
readFully()在缓冲区已满时返回,无论是否还有更多字节要读取。当所有字节都被读取时,read()返回。对吗? -
没有。
read()至少读取一个字节时返回;readFully()当缓冲区被填满时。