簡體   English   中英

DataInputStream/DataOutputStream 類與 InputStream/OutputStream 類的區別

[英]Difference Between DataInputStream/DataOutputStream Class & InputStream/OutputStream Class

每當我在Java MEAndroidBlackBerry使用HttpConnection類時,我都會使用DataInputStream / DataOutputStream類通過遠程服務器讀取和寫入數據。 但是,還有其他類,如InputStream / OutputStream可用於相同目的。 我用HttpConnection看到了關於InputStream / OutputStream類的問題。 所以我想從專家那里知道這兩者之間有什么區別?

DataInputStream / DataOutputStreamInputStream / Outputstream InputStreamOutputStream是您可以使用的最通用的 IO 流,它們是 Java 中所有流的基類。 您只能使用它們讀取和寫入原始字節。 DataInputStream寫入格式化的二進制數據。 您可以讀取BytesIntegerDoubleFloatShort 、 UTF-8 字符串以及這些數據的任何混合,而不只是簡單的無格式字節。 對於DataOutputStream也可以這樣說,除了它寫入這些更高級別的數據類型。

DataInputStream / DataOutputStream具有對InputStream / OutputStream的引用,它讀取原始字節並將這些字節解釋為前面提到的數據類型。

盡管從DataInputStream讀取字符串不是一個好主意,因為它對底層InputStream的字符編碼做出了不可更改的假設。 相反,最好使用Reader將字符編碼正確應用於底層字節流以讀取數據。 這就是DataInputStream / DataOutputStream用途有限的原因。 通常最好在進程之間交換文本數據,因為最容易讓服務器和客戶端就如何解析數據達成一致。 交易二進制有很多必須進行的操作,以確保每個過程都使用相同的語言。 如果您有兩個使用DataInputStream / DataOutputStream Java 進程,這很容易,但是如果您想添加一個不是 Java 的新客戶端,您將很難重用它。 不是不可能,只是更難。

DataOutputStream確保以獨立於平台的方式格式化數據

只有當你將原始二進制數據的OutputStream。

DataOutputStream - 這是最大的好處。

兩者之間沒有顯着的性能差異。

DataOutputStream只能處理基本類型。

它只能讀/寫原始類型字符串.DataInput/OutputStream 通常表現更好,因為它更簡單。

ObjectInput/OutputStream可以讀/寫任何對象類型以及原語 如果您想發送復雜的數據,它的效率較低,但更易於使用。

使用 ObjectOutputStream 類,可以將實現Serializable的類的實例寫入輸出流,並且可以使用 ObjectInputStream 讀回。

我會假設Object*Stream最佳選擇,直到您知道它的性能是一個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM