Java - IntBuffer包装

ale*_*dro 7 java

我正在使用以下方法读取整数文件:

int len = (int)(new File(file).length());
FileInputStream fis = new FileInputStream(file);
byte buf[] = new byte[len];
fis.read(buf);
IntBuffer up = ByteBuffer.wrap(buf).order(ByteOrder.LITTLE_ENDIAN).asIntBuffer();
Run Code Online (Sandbox Code Playgroud)

但是,它在内存中创建了两个文件副本,1)字节数组副本2)IntBuffer副本.

是否可以以这种方式使用代码,因此它只会在内存中创建一个副本?

Tim*_*der 6

我所看到的javadoc和Oracle的实现表明你说的不是真的.javadocs说:

public static ByteBuffer wrap(byte [] array)

将字节数组包装到缓冲区中.

新缓冲区将由给定的字节数组支持; 也就是说,对缓冲区的修改将导致数组被修改,反之亦然.

代码显示array传入ByteBuffer.wrap的只是被指定为内部数组ByteBuffer.该ByteBuffer.asIntBuffer方法简单地显示了IntBuffer使用该方法的创建ByteBuffer.