从RandomAccessFile一次读取一组int

时间:2013-05-13 11:00:33

标签: java randomaccessfile

我正在尝试从RandomAccessFile中读取一组int。然而,RandomAccessFile仅支持读取字节数组。到目前为止我的代码:

public long getSumOfElementsFromArray(long start, int length)
{
    int[] tempArray = new int[length];
    try
    {
        RAF.seek(start);
        RAF.readFully( (byte[]) (tempArray) , 0, length*4);
        //do some stuff with tempArray
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
    return 0;
}

Eclipse告诉我:“无法从int []转换为byte []”。在C中,我可以轻松地将int *转换为char *,但我不知道如何在Java中完成。我怎么能用Java做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以使用ByteBuffer。阅读为byteArray然后转换。

int[] tempArray = ByteBuffer.wrap(byteArray).asIntBuffer().array();

检查similar question

答案 1 :(得分:0)

您是否尝试过readInt方法:

    for (int i = 0; i < tempArray.length; i++) {
            tempArray[i] = RAF.readInt();
    }

如果将int []强制转换为byte [],则不允许将其丢失,因为信息丢失,因此不允许(byte[])tempArray

该方法采用byte []参数而不是int []所以不能直接给int []。如果不允许数组类型加宽,而没有数组,则可以像方法接受int那样传递字节。