我正在寻找一种从DataInputStream读取大量int并将其加载到数组中的方法。我确切地知道我需要读多少int
,但如果有一种比简单迭代更干净的方法,那就太好了。
已经有一种方法可以使用字节数组来实现这一点,只需使用DataInputStream#read(byte[])
方法,但int[]
没有等效方法。很明显,我可以通过创建一个长度乘以4的字节数组将数据读取到字节数组中,但我确实需要int
s中的数据。
在我看来,有三种可能性我可以使用:
- 以某种方式将数据直接加载到
int[]
中 - 以某种方式将
byte[]
转换为int[]
- 遍历数组,然后只使用
readInt()
虽然前两种解决方案更受欢迎,但我目前还不知道如何做到这两种。有没有简单的方法可以做到这一点而不需要迭代?
这样做的唯一方法似乎是简单的for循环和使用readInt()
。这就是我最终选择做的。
您可以尝试使用ByteBuffer
,它能够将数据留在操作系统内存中,因此读取速度非常快。它还有一个getInt()
方法,它应该允许您直接读取整数并将它们放入数组中。