2009-06-01 5 views

Répondre

1

S'il s'agit d'un simple fichier texte, vous devrez tout copier sauf les lignes MBA dans un nouveau fichier. Les fichiers à accès aléatoire ne prennent pas vraiment en charge la suppression ou l'insertion.

Optimisation: déplacer tout ce qui suit la ligne MBA vers le haut (dans le même fichier)

Alternative: utiliser quelque chose de plus structuré comme une base de données.

0

Il me semble que vous êtes à la recherche d'une implémentation de type «grep». Il existe une implémentation Java de GNU grep, vous pouvez trouver la documentation here, et télécharger à partir d'un lien dans la page this.

2

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.

Questions connexes