2009-06-01 3 views
1

ich eine zufälligen Access-Datei verwenden, in dem ich eine Zeile löschen möge, die wie eine Bedingung erfüllt, wenn ich Datensätze, wie eine bestimmte Linie von Random Access-Datei löschen

30 MCA

MBA 20

BCA 10

jetzt meine Anforderung ist, wenn ich MBA eingeben dann zweite Zeile gelöscht werden soll.

+0

Sind die Linien immer gleich lang? –

Antwort

1

Wenn es eine einfache Textdatei ist, müssen Sie alles außer der/den MBA-Zeile (n) in eine neue Datei kopieren. Random Access-Dateien unterstützen nicht wirklich löschen oder einfügen.

Optimierung: alles nach dem Line-Up MBA bewegen (in der gleichen Datei)

Alternative: wie eine Datenbank aufgebaut etwas mehr verwenden.

0

Es klingt für mich wie Sie für eine 'Grep' wie Implementierung suchen. Es gibt eine Java-Implementierung von GNU Grep, Sie können die Dokumentation here, finden und von einem Link in this Seite herunterladen.

2

Im Allgemeinen bedeutet das Entfernen eines Elements aus der Mitte der Datei das Neuschreiben aller Einträge nach dem Eintrag, um das belegte Feld zu verwenden.

Einige Dinge markieren stattdessen Elemente, die mit einem ungültigen Wert gelöscht werden, um zu erkennen, dass der Steckplatz nicht belegt ist. In der Regel werden gelöschte Slots nicht erneut verwendet, da dies mehr Management ist, als Sie sich vielleicht vorstellen, und im Grunde genommen eine Heap-ähnliche Architektur in einer Datei implementiert. Sie benötigen einen separaten "Kompaktierungs" -Schritt, um diesen Totraum später zu entfernen. Microsoft Jet (wie in Access) hat so funktioniert.

Es gibt eine sehr coole Optimierung, die in einigen Fällen anwendbar ist:

Wenn die Zeilen sind ungeordnet, und gleich lang, können Sie den gewünschten Eintrag überschrieben mit dem letzten Eintrag ‚Löschen‘, und die Datei gestutzt.

Wenn die Zeilen ungeordnet aber keine feste Länge sind, können Sie eine kompliziertere Variante dieses Ansatzes verwenden, bei der Sie einen Eintrag aus der Nähe des Endes verschieben, das die gleiche Länge wie das zu entfernende Element hat mische so wenig wie möglich ein.

Verwandte Themen