5

每当我使用HttpConnectionClass in或 in 时Java ME,我都会使用/ class 通过远程服务器读取和写入数据。但是还有其他类,例如/可以用于相同目的。我看到了关于/类的问题。所以我想从专家那里知道这两者之间有什么区别?AndroidBlackBerryDataInputStreamDataOutputStreamInputStreamOutputStreamInputStreamOutputStreamHttpConnection

4

3 回答 3

15

DataInputStream/DataOutputStreamInputStream/ OutputstreamInputStream并且OutputStream是您可以使用的最通用的 IO 流,它们是 Java 中所有流的基类。您只能使用它们读取和写入原始字节。DataInputStream写入格式化的二进制数据。Bytes您可以读取, Integer, Double, Float, Short, UTF-8 字符串以及该数据的任何混合,而不仅仅是简单的未格式化字节。DataOutputStream除了写入这些更高级别的数据类型之外,也可以这样说。

A DataInputStream/DataOutputStream具有对 / 的引用InputStreamOutputStream它读取原始字节并将这些字节解释为前面提到的数据类型。

尽管DataInputStreamInputStream. 相反,最好使用 a Reader,它将正确地将字符编码应用于底层字节流以读取数据。这就是为什么DataInputStream/DataOutputStream的用途有限。通常最好在进程之间交换文本数据,因为让服务器和客户端就如何解析数据达成一致是最容易的。交易二进制文件有很多必须进行的操作,以确保每个进程都在使用相同的语言。DataInputStream如果您有两个使用/的 Java 进程,这很容易DataOutputStream,但如果您想添加一个不是 Java 的新客户端,那么重用它会很困难。不是不可能,只是更难。

于 2012-01-19T05:46:23.627 回答
5

DataOutputStream只能处理基本类型。

它只能读/写原始类型字符串。DataInput/OutputStream 通常表现更好,因为它更简单。

ObjectInput/OutputStream可以读/写任何对象类型以及原语。如果您想发送复杂的数据,它的效率较低但更易于使用。

使用 ObjectOutputStream 类,实现类的实例Serializable可以写入输出流,并且可以使用 ObjectInputStream 读回。

我会假设Object*Stream最佳选择,直到您知道它的性能是一个问题。

于 2016-03-02T11:03:57.927 回答
4

DataOutputStream确保数据以独立于平台的方式格式化

仅当您传输原始二进制数据时才使用OutputStream 。

DataOutputStream - 这是最大的好处。

两者之间没有显着的性能差异。

于 2015-03-20T10:05:47.263 回答