AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateiinhalt teilweise löschen

Ein Thema von blablab · begonnen am 23. Apr 2012 · letzter Beitrag vom 23. Apr 2012
Antwort Antwort
Seite 2 von 2     12   
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#11

AW: Dateiinhalt teilweise löschen

  Alt 23. Apr 2012, 10:23
Du könntest eine kleine FAT in dein Format einbauen, und zu löschenden Speicher einfach als "nicht belegt" markieren. Sobald dann wieder was geschrieben wird, kommt das in die "freien Bereiche", ggf. auch fragmentiert. Dabei wird nach Löschen das Archiv allerdings nicht kleiner, dafür ließe sich dann aber eine Service-Option machen, die auf Wunsch defragmentiert und zusammenschiebt wenn Zeit dafür ist.

Edit: Holy Bananasplit! Ich war ja NOCH lahmer. Verfluchtes Telefon =)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#12

AW: Dateiinhalt teilweise löschen

  Alt 23. Apr 2012, 14:49
Genau jenes haben wir (ich und Björn (olee?)) realisiert. Such mal nach VPHD

Edit: Ich hab dann meine Variante nicht veröffentlicht, da es ja im Kern dasselbe ist...
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#13

AW: Dateiinhalt teilweise löschen

  Alt 23. Apr 2012, 14:59
Eine vielleicht etwas dumme Frage aber: Muss die Datei denn am Clusteranfang anfangen? Kann da nicht das erste Zeichen ungenutzt bleiben und der Dateiinhalt fängt dann erst beim 2. Zeichen an?
Nein.

Um mein Problem etwas genauer zu beschreiben:

Ich möchte eine Art Archiv machen, also eine Datei in der mehrere Dateiinhalte hintereinander stehen. Ich weiß jetzt aber nicht, was ich machen soll, wenn ich eine Datei aus dem Archiv löschen will. Denn ich möchte die Größe des Archivs nicht einschränken, das soll ruhig mehrere Gigabyte groß werden können und das wird es in der Praxis auch. Aber wenn ich dann nur eine einzige Datei lösche die eher am Anfang des Archivs steht, kann ich doch nicht den ganzen Dateiinhalt kopieren. Ich kann den Benutzer doch nicht nach jedem Löschvorgang 2 Minuten warten lassen...
Sekunde, du hast ein Archivformat in dem die Dateien wie genau angeordnet sind?

Normalerweise wäre der erste Schritt die "Verzeichniseinträge" zu löschen, also die Verweise auf Daten im Archiv. Danach könntest du verwaiste Daten in einem Rutsch löschen und das Archiv neu aufbauen.

Sprich: unter normalen Umständen entfernst du nur den Verweis.

Alle paar x-Male oder wenn eine bestimmte Kenngröße erreicht ist, rekonstruierst du das Archiv ohne die verwaisten Daten und hast so ein konsolidiertes Archiv.

Beispiele für Programme die das so machen sind Mailprogramme ala Thunderbird ("Verzeichnis komprimieren") und TrueImage ("Backuparchiv konsolidieren").
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)

Geändert von Assarbad (23. Apr 2012 um 15:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#14

AW: Dateiinhalt teilweise löschen

  Alt 23. Apr 2012, 15:06
Zur Datei wird nur der Startcluster und die Dateigröße gespeichert.
und über das VolumeBitmap (so nennt es sich in NTFS, bzw. über die FAT/FileAllocationTable beim FAT) werden dann die nachfolgenden Cluster verlinkt.
Bei jedem Clustereintrag steht dann entweder das nächste Cluster, eine virtueller Cluster (die Endemarkierung) oder eine 0 (ungenutzer Cluster) drin.

Da nirgendwo eine Byteposition gespeichert wurde, erklärt es sich von selber, daß man Cluster nur komplett nutzen kann. (bis auf das Ende des letzen Clusters)

Anders ist das eben bei den Sparse Files und den Compressed Files, wo auch noch die Größe der einzelnen Blöcke gespeichert wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#15

AW: Dateiinhalt teilweise löschen

  Alt 23. Apr 2012, 15:27
Zur Datei wird nur der Startcluster und die Dateigröße gespeichert.

[...]

Anders ist das eben bei den Sparse Files und den Compressed Files, wo auch noch die Größe der einzelnen Blöcke gespeichert wird.
Bei NTFS gibt es noch eine andere Variante für sehr kleine Dateien. Die können nämlich durchaus zusammen mit den Metadaten gespeichert sein. Aber im Großen und Ganzen stimmt deine Aussage.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz