Я пытаюсь очистить содержимое файла, созданного в java. Файл создается вызовом PrintWriter. Я прочитал здесь, что можно используйте RandomAccessFile для этого и где-то читал, что это на самом деле лучше использовать, чем вызывать новый PrintWriter и немедленно закрывать его, чтобы перезаписать файл пустым.
Однако использование RandomAccessFile не работает, и я не понимаю, почему. Вот основная схема моего кода.
PrintWriter writer = new PrintWriter("temp","UTF-8");
while (condition) {
writer.println("Example text");
if (clearCondition) {
new RandomAccessFile("temp","rw").setLength(0);
// Although the solution in the link above did not include ',"rw"'
// My compiler would not accept without a second parameter
writer.println("Text to be written onto the first line of temp file");
}
}
writer.close();
Выполнение эквивалента приведенного выше кода дает моему временному файлу содержимое:
(Давайте представим, что программа дважды зациклилась до того, как было выполнено clearCondition)
Example Text
Example Text
Text to be written onto the first line of temp file
ПРИМЕЧАНИЕ. Модуль записи должен иметь возможность снова записать пример текста в файл после очистки файла. ClearCondition не означает, что цикл while прерывается.