2012-01-02 9 views
5

Sé cómo truncar un archivo RandomAccess para que se eliminen los bytes al final.Java RandomAccessFile truncado desde el inicio

raf.getChannel().truncate(file.length() - 4); 

o

raf.setLength(file.length() - 4); 

Pero, ¿cómo se puede truncar una RandomAccessFile de tal manera que los bytes en el inicio de la extracción? No necesito escribir el contenido de este archivo en un nuevo archivo. Busqué en Google y no pude encontrar una respuesta. Por favor ayuda. Gracias por adelantado.

Respuesta

5

No es una operación compatible con la mayoría de los sistemas de archivos. El modelo es una secuencia de bytes que comienza en un lugar particular en el disco. Los archivos son de longitud variable y se pueden anexar, por lo que el truncamiento es relativamente fácil desde allí.

Así que realmente tendrá que copiar todos los bytes en el archivo. Si es posible, evite. Una técnica para administrar los archivos de cola (como los registros) es tener una secuencia de archivos, luego iniciar un nuevo archivo periódicamente y descartar uno.

+0

Gracias por el aviso @Tom. Continué con el siguiente uso de su información. fc.transferTo (seek, file.length() - seek, fcTmp); – prageeth

+0

es una lástima, también. los sistemas de archivos que se ejecutan en medios flash serían ideales para un "truncado desde el principio" debido a la cantidad limitada de ciclos de borrado. – Michael

Cuestiones relacionadas