Seite 1 von 1

FileSize() welche Größe?

Verfasst: 22.11.2018 14:01
von marcelx
Hallo,

welche Größe wird da ausgegeben?
Ich habe eine Datei mit CopyFile() kopiert.
Es gibt in Eigenschaft verschiedener Größen:
"Größe" und "Größe auf Datenträger"
Mit FileSize() bekomme ich die "Größe auf Datenträger" und meine Programm sagt, dass die Dateien ungleich sind (FileSize-Vergleich), obwohl sie gleich sind.

Wie kann ich die tatsächliche Größe vergleichen?

Gruß
MarcelX

Re: FileSize() welche Größe?

Verfasst: 22.11.2018 14:14
von #NULL
Vielleicht verschiedene Dateisysteme/Blocksizes?

Re: FileSize() welche Größe?

Verfasst: 22.11.2018 14:27
von NicTheQuick
FileSize() gibt dir die Byte-genaue Größe deiner Datei. Die Größe auf dem Datenträger ist ziemlich unwichtig. Sie ist nämlich einfach nur die tatsächliche Größe aufgerundet auf die Blockgröße deines Dateisystems. Das heißt eine Datei der Größe 1 Byte verbraucht auf einem Datenträger, der mit einer Blockgröße von 4 kB formatiert wurde, eben genau 4 kB. FileSize() wird dir aber 1 Byte zurückliefern.

Re: FileSize() welche Größe?

Verfasst: 22.11.2018 15:27
von marcelx
Danke für die Erläuterung.
Das bedeutet, wenn ich den benötigte Speicherplatz überprüfen will, reicht den FileSize() nicht aus!

Re: FileSize() welche Größe?

Verfasst: 22.11.2018 15:31
von RSBasic
Wenn du den freien Speicherplatz ermitteln möchtest, dann kannst du GetDiskFreeSpaceEx_() benutzen. Damit kannst du u.a. auch die Sektorgröße ermitteln und damit die Dateigröße auf die Sektorgröße/Blockgröße aufrunden.

Weder in PB noch in WinAPI gibt es eine Funktion zum Ermitteln der "echten" Größe einer Datei, die auf der Festplatte tatsächlich belegt, aber du kannst das wie oben beschrieben selber ausrechnen. Im Stackoverflow-Forum gibt es ein paar Codes zum Benutzen: https://stackoverflow.com/questions/375 ... le-on-disk

Falls die Datei vom NTFS komprimiert wurde, kannst du sowohl die komprimierte als auch die originale Dateigröße ermitteln: https://www.rsbasic.de/aktualisierung/w ... mitteln.pb