Généralement, supprimer un élément du milieu du fichier signifie réécrire toutes les entrées après l'entrée afin d'utiliser l'espace occupé par l'élément.
À la place, certains éléments sont marqués avec des valeurs non valides pour indiquer que l'emplacement est inutilisé. Généralement, ils ne réutilisent même pas les emplacements supprimés, car il s'agit plutôt d'une gestion plus que vous ne l'imaginez, et implémente fondamentalement une architecture de type tas dans un fichier. Ils ont besoin d'une étape de 'compactage' séparée pour retirer cet espace mort plus tard. Microsoft Jet (comme dans Access) a fonctionné comme ceci.
Il y a une optimisation très cool qui est applicable dans certains cas:
Si les lignes ne sont pas ordonnés, et la même longueur, vous pouvez remplacer l'entrée que vous voulez « supprimer » avec la dernière entrée, et tronquer le fichier.
Si les lignes sont non ordonnées mais pas de longueur fixe, vous pouvez utiliser une variante plus compliquée de cette approche où vous déplacez une entrée proche de la fin qui a la même longueur que l'élément en cours de suppression, afin de ne mélanger le moins d'entrées possible.
Les lignes ont-elles toujours la même longueur? –