![]() |
Wieviel Speicherplatz belegt eine Datei HDD (FAT16/32)
Hi,
es ist ja bekannt das es einen unterschied zwischen der Dateigröße einer Datei und dem tatsächlich belegten Speicherplatz auf der Festplatte gibt. Jetzt meine Frage wie errechne ich diesen Speicherplatz den meine Datei auf der Festplatte benötigt. Mir ist schon klar das es auf das FileSystem ankommt, es geht um FAT (16/32) und entsprechender Cluster größe. Gibt es da irgendwie eine einfache Formel wo ich anhand der Dateigröße und Clustergröße den benötigten Speicherplatz ermitteln kann? mfg TUX |
Re: Wieviel Speicherplatz belegt eine Datei HDD (FAT16/32)
Ganz einfach:
Erstmal mußt Du die ![]() In unserem Beispiel ist die Größe 4096 Bytes. Nehmen wir an, Du hast eine Datei, die 18944 Bytes groß ist: Du teilst die 18944 durch die Zuordnungseinheitsgröße, rundest auf die nächste ganze Zahl und multiplizierst diese mit der Zuordnungseinheitsgröße. 18944 / 4096 = 4,625 4096 * 5 = 20480 Die Datei belegt also ![]() Kurios kann die Angabe werden, wenn die Datei mit dem NTFS-Dateisystem komprimiert ist, dann wird die ![]() Daniel |
Re: Wieviel Speicherplatz belegt eine Datei HDD (FAT16/32)
Probiers mal damit:
Delphi-Quellcode:
function GetFileSize(const FileName: string): LongInt;
var SearchRec: TSearchRec; begin try if FindFirst(ExpandFileName(FileName), faAnyFile, SearchRec) = 0 then Result := SearchRec.Size else Result := -1; finally SysUtils.FindClose(SearchRec); end; end; |
Re: Wieviel Speicherplatz belegt eine Datei HDD (FAT16/32)
interessant ist es bei *wirklich* grossen festplatten mit einem ungünstigen Filesystem.
Da kann eine Datei mit eigentlich nur ein paar kB schon mal einige Megabyte in Anspruch nehmen... |
Re: Wieviel Speicherplatz belegt eine Datei HDD (FAT16/32)
@IchBins: Damit kriegst Du aber nur die Dateigröße raus, nicht den Platz, der auf der Platte benötigt wird.
@RavenIV: Zuordnungseinheiten größer als 64 KB sollte es eigentlich nicht geben, bei FAT16 ist doch bei 2 GB Schluß (unter Windows NT kriegt man noch 4 GB hin, da wären es 128 KB), bei FAT32 und NTFS sind die Zuordnungseinheiten ohnehin kleiner. Gerade ausprobiert: Selbst bei einer 1 TB-Partition mit NTFS sind die ![]() ![]() ![]() Bei vielen winzigkleinen Dateien mit wenigen Bytes kommen da aber schnell einige Megabytes zusammen. Schönen Kandidaten dafür sind beispielsweise die Favoriten beim Internet Explorer. Daniel |
Re: Wieviel Speicherplatz belegt eine Datei HDD (FAT16/32)
Hai TUX,
Du kannst dir ja auch einfach einmal diesen ![]() |
Re: Wieviel Speicherplatz belegt eine Datei HDD (FAT16/32)
Zitat:
|
Re: Wieviel Speicherplatz belegt eine Datei HDD (FAT16/32)
Hi,
vielen Dank für die vielen Antworten, ich werde das ganze mal austesten, ich denke ich komme jetzt damit zurecht ;-) mfg TUX |
Re: Wieviel Speicherplatz belegt eine Datei HDD (FAT16/32)
Hi,
ich habe mal fix ein kleines Konsolen Prog geschrieben, was mir auf dem Win98 Rechner entsprechend die Clustergröße anzeigen soll.
Delphi-Quellcode:
program HDD_INFO;
{$APPTYPE CONSOLE} uses SysUtils, Windows; var Drive : String; ClusterSize : Cardinal; SectorPerCluster : Cardinal; BytesPerSector : Cardinal; NumberOfFreeClusters : Cardinal; TotalNumberOfClusters : Cardinal; begin { TODO -oUser -cConsole Main : Hier Code einfügen } If ParamStr(1) <> '' Then Begin Drive := ParamStr(1); If Drive[Length(Drive)] <> '\' Then Drive := Drive+'\'; GetDiskFreeSpace(PChar(Drive),SectorPerCluster, BytesPerSector, NumberOfFreeClusters, TotalNumberOfClusters); ClusterSize := SectorPerCluster * BytesPerSector; Writeln(Drive,'Clustergröße: ',ClusterSize); End;{if} end. Alles Funktioniert soweit, jedoch wenn ich mir die Clustergröße von Partition C: anzeigen lassen will ( FAT32 ) sagt er mit die Clustergröße sei 32K ?! Obwohl diese doch bei nur 16K liegt, habe eine Datei angelegt mit 1Byte größe und es wird nur 16K belegt. Bei einem Test mit einer CompactFlash Card wird mir korrekt 4096Byte Clustergröße angezeigt, bei einer Diskette 512K. Versteh nicht so richtig was das soll, ach ja SectorPerCluster sind 64 und BytesPerSector sind 512, wird mir bei der FAT32 Partition angezeigt. Klar das er dann auf 32K kommt, nur wieso ?! mfg TUX p.s. Konsolen-Programm erstellt in Delphi 7 |
Re: Wieviel Speicherplatz belegt eine Datei HDD (FAT16/32)
Ich habs eben mal unter Windows XP mit FAT12 (Diskette, 512 Bytes), FAT32 (20GB-Partition, 16KB) und NTFS (Partitionen 5 GB, 10 GB und 20 GB, je 4 KB) ausprobiert, und mit den Werten von Chkdsk verglichen, da läuft es einwandfrei.
Kompiliert hab ich mit Delphi 7 Personal und Delphi 2005 Personal. Vielleicht irgendeine Besonderheit von Windows 98? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz