Pregunta

Le escribo alguna implementación de pruebas de acceso a datos y necesito de acceso aleatorio para presentar contenidos. Aquí está el código:

RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rwd");
final byte b[] = IOUtils.toByteArray(source);
randomAccessFile.write(b, (int) offset, size);

donde ha compensado tipo long. ¿Por qué no RandomAccessFile proporcionar un método:

public void write(byte b[], long off, int len)

Cómo anular este problema?

¿Fue útil?

Solución

Creo que busca el método seek.

El desplazamiento en write es un desplazamiento en la matriz. Las matrices tienen compensaciones int. Ha habido propuestas para "largas matrices", pero éstos fueron implementados, todavía se necesitaría una sobrecarga.

Los archivos mapeados en NIO tienen el problema de que la MappedByteBuffer.position equivalente por alguna razón sólo utiliza int. Ver CR 6347833 (9 votos).

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