Vorrei nascondere la prima riga di un file di testo in Java. Questo file è di diversi gigabyte e non voglio fare una copia. Utilizzando il suggerimento da this post, sto tentando di farlo utilizzando RandomAccessFile, tuttavia sta scrivendo troppo.Come posso sostituire la prima riga di un file di grandi dimensioni in Java?
Ecco il mio codice:
RandomAccessFile raInputFile = new RandomAccessFile(inputFile, "rw");
origHeaderRow = raInputFile.readLine();
raInputFile.seek(0);
raInputFile.writeChars(Strings.repeat(" ",origHeaderRow.length()));
raInputFile.close();
E se volete qualche input e output di esempio, ecco cosa succede:
Prima:
first_name,last_name,age
Doug,Funny,10
Skeeter,Valentine,9
Patti,Mayonnaise,11
Doug,AlsoFunny,10
Dopo:
alentine,9
Patti,Mayonnaise,11
Doug,AlsoFunny,10
In questo esempio, nella maggior parte degli editor il file inizia correttamente con 24 spazi vuoti, ma sono stati sostituiti 48 caratteri (incluse le nuove linee). Dopo aver incollato qui vedo strani punti interrogativi. La sostituzione a doppia dimensione mi fa pensare a qualcosa che coinvolge la codifica, ma ho provato writeUTF con gli stessi risultati.
Yay per usare il mio nome! –
Solo per quello che sai, è impossibile modificare un file "sul posto" con file system moderni. Una nuova copia è sempre fatta. – toto2
In che file è la codifica? 1521? UTF8? UCS2? –