Java: редактировать / удалять конкретную строку (с потоками) непосредственно в исходном файле - PullRequest
0 голосов
/ 31 января 2019

Это мой сценарий: у меня есть огромный файл .txt (~ 16 ГБ), который содержит несколько строк, которые необходимо удалить (которые можно легко найти с помощью .contains ()).Очевидно, что идея загрузить весь файл в ОЗУ и исследовать его с помощью сканера, а затем сохранить результаты в новом файле .txt неосуществима (так как у меня 16 ГБ ОЗУ).Я также знаю, что с потоками я могу читать файл построчно, избегая утечки памяти.Что я не знаю (и не смог найти), так это то, что можно редактировать эту конкретную строку и поместить ее обратно в файл.В противном случае, возможно ли просто переписать новый файл .txt только с «правильными» строками, аналогично тому, который позволяет мне читать построчно, без загрузки всего файла в памяти, так как до или после негостанет таким же огромным, как оригинал?

1 Ответ

0 голосов
/ 31 января 2019

Настройте Stream Reader, который будет построчно читать ваш файл, и Stream Writer, который будет выводить в новый файл.Если читатель не находит строку для редактирования, он просто записывает эту строку в новый файл.Если читатель обнаружит строку, которую он хочет отредактировать, создайте метод для манипулирования строкой и верните ее, а затем попросите Writer написать эту манипулированную строку, а не исходную.

Вам не будет разрешен доступодин и тот же файл с Streamreader и Streamwriter.

...