![](/img/trans.png)
[英]Using decorated OutputStream/InputStream fields in your class
[英]Difference Between DataInputStream/DataOutputStream Class & InputStream/OutputStream Class
每當我在Java ME
、 Android
或BlackBerry
使用HttpConnection
類時,我都會使用DataInputStream
/ DataOutputStream
類通過遠程服務器讀取和寫入數據。 但是,還有其他類,如InputStream
/ OutputStream
可用於相同目的。 我用HttpConnection
看到了關於InputStream
/ OutputStream
類的問題。 所以我想從專家那里知道這兩者之間有什么區別?
DataInputStream
/ DataOutputStream
是InputStream
/ Outputstream
。 InputStream
和OutputStream
是您可以使用的最通用的 IO 流,它們是 Java 中所有流的基類。 您只能使用它們讀取和寫入原始字節。 DataInputStream
寫入格式化的二進制數據。 您可以讀取Bytes
、 Integer
、 Double
、 Float
、 Short
、 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.