为什么在Server Client程序中首选DataOutputStream

why DataOutputStream is preferred in Server Client program

为什么 DataInputStream/DataOutputStream 比任何其他 java 流(如 BufferedInputStream/BufferedOutputStream 、BufferedReader/BufferedWriter 在 Socket 编程(如服务器客户端程序)中使用或更受欢迎?

请解释一下它们的区别??

给出 DataOutputStream 的详细特征(比如它的作用)。

并明确解释为什么以及何时我们需要 DataInputStream/DataOutputStream ??

提前致谢。

DataInputStream/DataOutputStream 实现 DataInput/DataOutput 接口,因此具有 writeShort()readInt() 等方法。如果您必须 read/write 某些原语(short/int/utf8 字符串/...)而不仅仅是字节的数据,这将非常方便。

在发送端,你做类似的事情

OutputStream os = ... // let's say you already have it
DataOutputStream dos = new DataOutputSream();
dos.writeInt(42);

接收端是

InputStream is = ... // let's say you already have it
DataInputStream dis = new DataInputStream(is);
int intValue = dis.readInt();

现在intValue是42,不用考虑int到bytes的转换,byte order等等,直接写,然后用方便的方法读。

感谢 Roman Puchkovskiy,我得到了所有答案。而且我还发现 DataInputStream/DataOutputStream 和 BufferedReader/BufferedWriter 都可以在 Socket 编程中使用,但是 DataInputStream/DataOutputStream 是首选,因为

" It is very convenient if you have to read/write data in some primitives (short/int/utf8 string/...) and not just bytes. " as Roman Puchkovskiy said.

感谢大家前来帮助我。