DataInputStream/DataOutputStream 类和 InputStream/OutputStream 类之间的区别



每当我在Java MEAndroidBlackBerry中使用HttpConnection类时,我都会使用DataInputStream/DataOutputStream类进行读取&通过远程服务器写入数据。然而,还有其他类,如InputStream/OutputStream,可以用于相同的目的。我用HttpConnection看到了关于InputStream/OutputStream类的问题。所以我想从专家那里知道,这两者之间有什么区别?

DataInputStream/DataOutputStreamInputStream/OutputstreamInputStreamOutputStream是您可以使用的最通用的IO流,它们是Java中所有流的基类。您只能使用它们读取和写入原始字节。DataInputStream写入格式化的二进制数据。您可以读取BytesIntegerDoubleFloatShort、UTF-8字符串以及这些数据的任何混合数据,而不仅仅是简单的未格式化字节。DataOutputStream也是如此,只是它写入了这些更高级别的数据类型。

DataInputStream/DataOutputStream具有对InputStream/OutputStream的引用,其读取原始字节并将这些字节解释为先前提到的那些数据类型。

尽管从DataInputStream中读取字符串不是一个好主意,因为它对底层InputStream的字符编码做出了不可更改的假设。相反,最好使用Reader,它将正确地将字符编码应用于底层字节流以读取数据。这就是DataInputStream/DataOutputStream用途有限的原因。通常,最好在进程之间交换文本数据,因为最容易让服务器和客户端就如何解析数据达成一致。交易二进制文件需要进行大量的比特处理,以确保每个过程都使用相同的语言。如果你有两个使用DataInputStream/DataOutputStream的Java进程,这很容易,但如果你想添加一个不是Java的新客户端,那么重用它会很困难。不是不可能,只是更难。

DataOutputStream只能处理基本类型。

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

ObjectInput/OutputStream可以读取/写入任何对象类型以及基元。如果您想发送复杂的数据,它的效率较低,但使用起来要容易得多。

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

我认为对象*流的最佳选择,直到您知道其性能存在问题为止。

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

OutputStream仅当传输原始二进制数据时。

DataOutputStream-这是一大好处。

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

相关内容

  • 没有找到相关文章

最新更新