Предположим, у меня действительно большой текстовый файл, скажем 100 миллионов строк или 1 ГБ, и я хочу удалить последнюю строку. Нужно ли вообще сделать это, не переписывая 99,999,999 строк в новый файл и удаляя старый? Предположим, что файл действительно очень большой, что опция перезаписи является чрезмерно дорогой. Что бы вы сделали, чтобы удалить последнюю строку? Спасибо.Как удалить последнюю строку в текстовом файле со 100 М строк без перезаписи всего файла?
ответ
Вы можете открыть файл read from the end backwards, пока не найдете разделитель первой строки (обычно LF или CR/LF, в зависимости от платформы), вычислите смещение файла в этой точке и truncate the file to that file offset.
Вы должны использовать функцию усечения, но ни FILE*
, ни iostream
не поддерживают ее.
Однако на нижнем уровне обычно существуют функции, специфичные для ОС, для обрезания файла.
Если вы используете Unix, вы можете использовать ftruncate
, но вам нужно найти смещение, в котором вы хотите сначала усечь (имеет ли каждая строка фиксированный размер?).
Будьте осторожны, если вы обнаружили FILE*
для нахождения смещения, вам необходимо убедиться в его синхронизации с нижним уровнем. Вы можете просто fclose
файл, затем снова открыть его с открытым для ftruncate
файла с заданным смещением.
Похожие вопросы: https://stackoverflow.com/a/873653/2741329 и https://stackoverflow.com/a/15154682/2741329
- 1. Как удалить последнюю строку в текстовом файле?
- 2. как заменить слово в текстовом файле без перезаписи всего файла
- 3. Удалить последнюю строку в текстовом файле
- 4. Как отредактировать строку в середине txt-файла без перезаписи всего?
- 5. Измените заголовок в огромном файле без перезаписи всего файла
- 6. Удалить последнюю строку и проверить данные в текстовом файле
- 7. Как удалить определенную строку в текстовом файле?
- 8. Удалить первую строку в текстовом файле без выделения памяти для всего текстового файла
- 9. Как удалить строку в текстовом файле VBScript
- 10. Как читать указанную строку в текстовом файле?
- 11. Как удалить строку в текстовом файле
- 12. Python удалить последнюю строку файла
- 13. C Удалить первую строку из текстового файла без файла перезаписи
- 14. Прочитать последнюю строку, содержащую строку в текстовом файле?
- 15. Powershell Удалить строку в текстовом файле
- 16. Как я могу напечатать последнюю строку в большом текстовом файле?
- 17. C++ Как удалить строку в текстовом файле?
- 18. Как удалить строку в текстовом файле java?
- 19. как читать последнюю строку в текстовом файле с помощью java
- 20. Замена строки в файл без перезаписи всего файла (в PHP)
- 21. Удалить строку в одном текстовом файле из другого текстового файла
- 22. Сохранять только последние 100 строк данных в текстовом файле
- 23. Как удалить последнюю строку файла в Ruby?
- 24. Как удалить последнюю строку файла в scala?
- 25. batfile - как удалить последнюю, пустую строку в файле?
- 26. Как читать вторую последнюю строку в текстовом файле
- 27. Как удалить несколько строк в текстовом файле с помощью python?
- 28. Удаление строк в текстовом файле
- 29. Удалить одну строку в текстовом файле (Node.js)
- 30. Как удалить последнюю строку раздела?
Изменение размера файла меньшего размера? – Yakk
Какую ОС вы нацеливаете? Кросс-платформенный? – gmas80