我正在将一个带有InputStream的文件读入一个字节数组,然后将每个字节更改为一个int。然后我将int存储到另一个数组中。有没有办法让这个更有效率?具体来说,有没有办法只使用一个数组而不是两个?分配这两个阵列对我的程序来说太长了。
这就是我现在正在做的事情(is
是InputStream):
byte[] a = new byte[num];
int[] b = new int[num];
try {
is.read(a, 0, num);
for (int j = 0; j < nPixels; j++) {
b[j] = (int) a[j] & 0xFF; //converting from a byte to an "unsigned" int
}
} catch (IOException e) { }
答案 0 :(得分:0)
您是否查看了DataInputStream甚至FileInputStream?还有许多方法允许您直接从InputStream读取特定的数据类型。
我不知道在您的情况下是否可以使用您提供的信息。
答案 1 :(得分:0)
让我们看看...你不能直接读取int,因为它会尝试一次读取4个字节。你可以说
int_array[j] = (int)is.read();
如果你可以一次读取一个字节,那么在循环内部。
答案 2 :(得分:0)
为什么不使用返回int?
的无参数方法InputStream.read()File file = new File("/tmp/test");
FileInputStream fis = new FileInputStream(file);
int fileSize = (int) file.length(); // ok for files < Integer.MAX_SIZE bytes
int[] fileBytesAsInts = new int[fileSize];
for(int j = 0; j < fileSize; j++) {
fileBytesAsInts[j] = fis.read();
}