Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

AW: Windows.CreateFile() ohne Kompression

  Alt 20. Mai 2011, 10:06
Sowas wie Komprimierung, Verschlüsselung, ReparsePoint und SparseFile sind nunmal keine Dateiattribute, sondern Zustandsmarker.
Diese lassen sich also nicht einfach so als attribute setzen.

DeviceIoControl + FSCTL_SET_COMPRESSION

PS: Gegenüber Zip und Co. ist diese Art der Compression garnicht so langsam wie sie aussieht.

Bei der Compression wird die Datei in kleine Stücke zerlegt und diese Teile einzeln komprimiert. Zum Schluß werden diese Teile als SparseFile abgespeichert, also logisch gesehn liegen diese Teile an der selben Dateiposition, wie die unkomprimierten Teile, nur daß zwischendurch ein paar Stücken fehlen (nur logisch und nicht physisch auf der Platte liegen), so daß man überall in der Datei lesen und schreiben kann, ohne die ganze Datei umkomprimieren zu müssen.

PS: Vor dem Anlegen der Datei dem Ordner/Partition das CompressionFlag entnehmen, denn ist der Ordner komprimiert, dann werden Dateien standardmäßig auch komprimiert.
Ansonsten: Datei erstellen (0 Byte), Komprimierung ändern und dann füllen.

Ach ja, NTFS schafft noch ein paar TB.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Mai 2011 um 10:14 Uhr)
  Mit Zitat antworten Zitat