Pregunta

¿Hay una manera de ampliar el byte asignado a la memoria de Java tampón tal que el nuevo tamaño se refleja de vuelta al archivo asignado en el disco?

¿Fue útil?

Solución

No, usted tendrá que ajustar el tamaño del archivo subyacente y recrear la memoria asignada Byte Buffer.

RandomAccessFile file = new RandomAccessFile(/* some file */);
MappedByteBuffer buffer = file.getChannel().map(MapMode.READ_WRITE, 0, file.length());

// Some stuff happens...

// adjust the size
file.setLength(newLength);

// recreate the memory mapped buffer
buffer = file.getChannel().map(MapMode.READ_WRITE, 0, file.length());

Nota: Ajuste de la longitud del archivo tiene un comportamiento un poco extraño. Si se escribe en el fichero a través del mapa en una posición específica que está más allá del final del archivo (ya sea usando map.position () o map.putX (posición, ...)) los valores se añaden al final de el archivo y no está escrito en la posición que usted espera (en Linux por lo menos). Si este es un comportamiento no deseado tendrá que añadir los datos en el archivo con el fin de crecer realmente el archivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top