为什么没有IntegerArrayInputStream类?

时间:2014-02-14 01:48:02

标签: java int byte inputstream

我想知道为什么没有IntegerArrayInputStream的类,因为我有一个int数组能够将int写入图像文件格式。我还看到将int转换为字节有很多混淆。

5 个答案:

答案 0 :(得分:3)

任何函数库可以提供的数量都有限制;在某些时候,他们必须说“如果你需要一个,写一个或从JRE以外的一些包中获得一个。”你提出的不是特别经常需要的东西(不像ByteArrayInputStream,经常使用 ),也不是特别难以实现的东西,所以我并不感到惊讶它没有'切割。

答案 1 :(得分:1)

有一个ByteArrayInputStream的原因主要是让人们将整个字符串缓冲区(很容易变成字节数组)转储到文件中。已经存在Java库,它们仅用于Images的目的。但是字节数组比整数数组更适用于任何需要I / O的东西。

答案 2 :(得分:1)

因为有一个DataInputStream类和一个BufferedInputStream类,它们共同完成90%的工作,并且还包括字节,字符,短裤,长音,浮点数和双打,而不需要添加 N 类。

您无需为所需的每个功能添加课程。

答案 3 :(得分: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);

答案 4 :(得分:0)

我在上面发表评论,但我决定做出一个完整的回答。部分原因是Integer类是Java特定的东西。如果您不关心可移植性并且只想读取/写入Integer,则Integer是可序列化的,您可以将其视为对象或字符串值。它效率不高但是有效。如果你关心可移植性,那么因为原语是模糊的东西。它们可以改变字节数,有符号或无符号以及字节序(字节顺序)或这些东西的任何组合。另一方面,字节数组在大多数情况下始终以相同的方式表示(“bit-endianness”几乎不存在问题。大多数人甚至会说它是神话:)并且可以安全地读取/写入标准方式。