Как мне заменить первую строку большого файла в Java?

Я хотел бы очистить первую строку текстового файла на Java. Этот файл имеет размер несколько гигабайт, и я не хочу делать его копию. Используя предложение из этого сообщения , я пытаюсь сделать это с помощью RandomAccessFile, однако он пишет слишком много.

Вот мой код:

RandomAccessFile raInputFile = new RandomAccessFile(inputFile, "rw");
origHeaderRow = raInputFile.readLine();
raInputFile.seek(0);
raInputFile.writeChars(Strings.repeat(" ",origHeaderRow.length()));
raInputFile.close();

И если вам нужен какой-то образец ввода и вывода, вот что происходит:

До:

first_name,last_name,age
Doug,Funny,10
Skeeter,Valentine,9
Patti,Mayonnaise,11
Doug,AlsoFunny,10

После:

                        alentine,9
Patti,Mayonnaise,11
Doug,AlsoFunny,10

В этом примере в большинстве редакторов файл правильно начинается с 24 пробелов, но 48 символов (включая символы новой строки) были заменены. После вставки здесь я вижу странные вещи со знаком вопроса. Замена двойного размера заставляет меня задуматься о том, что что-то, связанное с кодированием, сбивается, но я попытался написатьUTF с теми же результатами.

9
задан Community 23 May 2017 в 12:01
поделиться