еще одно предложение: (чтобы учесть, если использование одного файла точно не является обязательным):
Если номер вашего объекта не очень велик, сохраните каждый объект в отдельном файле.Конечно, вам нужно будет создать уникальный идентификатор для каждого объекта, и вы также можете использовать этот идентификатор в качестве имени файла.таким образом, вы всегда добавляете или удаляете один файл на основе идентификатора, хранящегося в объекте.Если объекты принадлежат к разным классам, которые нельзя изменить, вы можете просто сохранить хэш-карту, которая отображает идентификаторы на объекты.поэтому, прежде чем добавить объект в очередь, вы создаете идентификатор, а затем добавляете объект и идентификатор на карту в виде пары, и вы записываете новые имена файлов в качестве идентификатора и содержащие объект.Я оставляю то, что нужно делать, удаляя и перезагружая, поскольку это не что иное, как практика.
лично я одобряю то, что было предложено Робертом Харви в его комментарии к вопросу.подумайте об использовании базы данных, особенно если в вашем проекте она уже есть.это сделает хранение объектов и удаление объектов проще и быстрее, чем поиск позиций в файле.потому что даже если вы найдете местоположение объекта в файле, скорее всего, вам потребуется снова записать весь файл (только без этого объекта).и это не отличается от зацикливания.используя базу данных, вы избежите всех этих неприятностей.