我想知道爲什麼沒有IntegerArrayInputStream
的類,因爲我有一個int
數組能夠將int寫入圖像文件格式。我也看到如何將ints轉換爲字節有很多混淆。爲什麼沒有IntegerArrayInputStream類?
-3
A
回答
0
抱歉,但是如果你想寫整數的字節,你不能使用
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
int x = 555;
dos.writeInt(x);
dos.close();
byte[] bytes = baos.toByteArray();
DataInputStream dis = new DataInputStream(new ByteArrayInputStream(bytes));
int y = dis.readInt();
System.out.println(y);
?
3
任何函數庫可以提供多少限制;在某些時候,他們不得不說「如果你需要一個,寫一個或從JRE以外的其他軟件包中獲得一個。」你所提出的並不是特別頻繁需要的東西(與ByteArrayInputStream不同,它經常使用是),也不是特別難以實現的東西,所以我並不感到驚訝,它並沒有削減。
1
原因是ByteArrayInputStream
主要是爲了讓人們將整個字符串緩衝區(很容易變成字節數組)轉儲到文件中。目前已有Java庫實現這個目的僅僅是爲了圖像。但是字節數組比任何需要I/O的整數數組更適用於更廣泛的應用。
0
我在上面發表了一條評論,但我決定做一個完整的答案。部分原因是Integer類是Java特有的東西。如果你不關心可移植性,只想讀/寫一個Integer,Integer是可序列化的,你可以把它當作一個對象或者一個字符串值。這不是有效的,但它的工作原理。如果你做關心可移植性,整數作爲原語是模糊的東西。它們可以在字節數,簽名或無符號和字節順序(字節順序)或這些事物的任意組合方面有所不同。另一方面,字節數組在大多數情況下總是以相同的方式在任何地方表示(「位 - 字節序」幾乎不存在,大多數人甚至會說它是一個神話:)並且可以安全地讀/寫在標準中辦法。
1
因爲有一個DataInputStream
類和BufferedInputStream
類一起做90%的工作,並且也覆蓋字節,字符,短褲,長整型,浮點和雙精度,而無需添加的Ñ類。
您不必爲每個需要的功能添加一個類。
相關問題
- 1. 爲什麼沒有NSHTTPURLProtocol類?
- 2. 爲什麼C#中沒有朋友類?
- 3. BCL爲什麼沒有CRC類?
- 4. 爲什麼ProcessBuilder類沒有重寫equals()?
- 5. 爲什麼Eclipse沒有更新類?
- 6. 爲什麼org.lwjgl.opengl.GL43類沒有glDrawElements方法?
- 7. 爲什麼ehcache2.6包中沒有「net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter」類?
- 8. 爲什麼typedef沒有強類型?
- 9. 爲什麼OSMF沒有org.osmf.net.netstream類?
- 10. 爲什麼SerialPort類沒有RIHolding屬性?
- 11. 爲什麼Microsoft.Web.Helpers中沒有'Facebook'類?
- 12. 爲什麼Button類中沒有getOnClickListener? (Android)
- 13. 爲什麼Java中沒有靜態類
- 14. 爲什麼Object類沒有Thread方法
- 15. 爲什麼字面值沒有類型?
- 16. 爲什麼在RandomAccessFile類中沒有readUnsignedInt?
- 17. 「抽象類沒有參數」:爲什麼?
- 18. 爲什麼Spring有JdbcDaoSupport類,但沒有類JmsSupport類?
- 19. 爲什麼YUI3沒有類似jQuery的所有類和示例?
- 20. 爲什麼Me.components什麼都沒有?
- 21. 爲什麼gridview.selectedColumns什麼都沒有?
- 22. 爲什麼我的課沒有什麼?
- 23. 爲什麼沒有類型類型的容器類型?
- 24. 爲什麼沒有uniform_distribution?
- 25. 爲什麼沒有asyncContext.cancel()
- 26. 爲什麼c#沒有union?
- 27. 爲什麼沒有String#shift()?
- 28. 沒有屎樹,爲什麼?
- 29. 爲什麼沒有foreignAutoDelete?
- 30. 爲什麼沒有document.createHTMLNode()?
請注意'ByteBuffer'可能適合在這裏。 –
不是整數值表示字節的完全不同的值嗎? –
如果你最終使用ByteArrayInputStream等自己寫一些東西,請記住,你可能需要更正「endian」的性質。 (在java中的整數不一定是/在二進制級別與其他地方的整數不等價) – Nick