2012-01-02 14 views
5

So come troncare un file RandomAccess in modo che i byte alla fine vengano rimossi.Java RandomAccessFile troncato dall'inizio

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

o

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

Ma come per troncare una RandomAccessFile in modo che byte all'inizio viene rimosso? Non ho bisogno di scrivere il contenuto di questo file in un nuovo file. Ho cercato su Google e non ho trovato risposta. Per favore aiuto. Grazie in anticipo.

risposta

5

Non è un'operazione supportata dalla maggior parte dei file system. Il modello è una sequenza di byte che inizia in un punto particolare del disco. I file sono di lunghezza variabile e possono essere aggiunti, e quindi il troncamento è relativamente semplice da lì.

Quindi sarà necessario copiare tutti i byte nel file. Se possibile evitate. Una tecnica per gestire i file di coda (come i registri) consiste nell'avere una sequenza di file, quindi avviare un nuovo file periodicamente e eliminarne uno alla fine.

+0

Grazie per l'heads up @ Tom. Sono andato avanti con il seguente utilizzando le tue informazioni. fc.transferTo (seek, file.length() - seek, fcTmp); – prageeth

+0

è troppo male, anche. i file system in esecuzione su supporti flash sarebbero ideali per un "troncato dall'inizio" a causa del numero limitato di cicli di cancellazione. – Michael