我想知道为什么没有IntegerArrayInputStream
的类,因为我有一个int
数组能够将int写入图像文件格式。我还看到将int转换为字节有很多混淆。
答案 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”几乎不存在问题。大多数人甚至会说它是神话:)并且可以安全地读取/写入标准方式。