Я работаю над классом обработчика файлов и сталкиваюсь с некоторыми проблемами с файловыми потоками.Предоставление функциональных возможностей для таких операций, как добавление и перезапись, является простым вопросом изменения режима, передаваемого в fopen.
Однако обеспечение простого способа вставки, обновления и удаления оказывается более сложной задачей.Практически все проблемы, с которыми я сталкиваюсь, связаны с fwrite.
Вставить - Насколько я могу судить, нет способа вставить символы в месте, отличном от конца файла, с помощью fwrite.Я выбрал два варианта: использовать file_get_contents и интенсивно использовать fseek / fwrite для расширения файла.
Delete - К сожалению, попытка записать NULL с использованием fwrite - это не то же самое, что «удалить»персонаж.Как и при вставке данных, снова доступны параметры file_get_contents и fseek / fwrite.
Обновление - обновление данных в файле представляет собой комбинацию проблем вставки / удаления.Если новое значение короче старого, тогда мне придется удалить дополнительные символы.Если новое значение длиннее старого, мне придется вставить дополнительные символы.Если они одинаковой длины, тогда просто использовать fwrite будет хорошо.
Надеюсь, есть кое-что, о чем я не знаю, что может решить эту проблему чисто.Каждый из найденных вариантов использует либо file_get_contents (который мне не нужен, так как весь файл должен быть прочитан в память), либо интенсивно использует fseek / fwrite для изменения длины файла (что мне кажется сложным).
У кого-нибудь есть идея, о которой я не задумывался?
Спасибо!