Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Windows.CreateFile() ohne Kompression

  Alt 20. Mai 2011, 11: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

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