Dateigrösse ermitteln?



  • Hi Forum,
    ich benutze FindFile() um Dateien in ein ListCtrl zu laden, jetzt hat sich herausgestellt das ich nur Dateien laden darf die auch einen Inhalt haben(was nicht sein muß, darum die überprüfung), dazu benutze ich die:

    CFileFind::GetLength();
    

    ich weiß jatzt nicht was die mir zurück gibt, anzahl zeichen in der Datei oder ... 😕 ? Oder welche Grösse erhalte ich hier? 😕
    Danke
    Mirsad



  • Du bekommst die anzahl der Zeichen (Byte) zurückgegeben.

    Um den Wert in Kilobyte umzuwandeln musst du WERT / 1024 rechnen.

    Bei Megabyte musst du WERT / 1024 / 1024 rechnen.

    Gruß, Manuel. 😉



  • Hallo Ellek,
    danke für die Antwort, der Grund warum ich das frage ist genau der den Du genannt hast, ich habe hier eine Datei bei der mir das GetLength() 2147 Byte zurück gibt, ok, damit hab ich kein Problem, die Datei ist nicht leer und nur das zählt bei der Aufgabe, nur was mich verwirrt hat ist das die Dateigrösse im Windows Explorer mit 3 Kilobyte(3 * 1024 = 3072 Byte) anegzeigt wird, Grösse auf Datenträger??? Ob da Windows noch zusätzliche Infos mit reinpackt das war die Hauptfrage??? Irgendwelche Dateiinformationen wie Datum der Erstelltung usw. die halt die Dateigrösse etwas aufblassen???
    MFC 🙂
    Mirsad



  • Mirsad schrieb:

    Hallo Ellek,
    danke für die Antwort, der Grund warum ich das frage ist genau der den Du genannt hast, ich habe hier eine Datei bei der mir das GetLength() 2147 Byte zurück gibt, ok, damit hab ich kein Problem, die Datei ist nicht leer und nur das zählt bei der Aufgabe, nur was mich verwirrt hat ist das die Dateigrösse im Windows Explorer mit 3 Kilobyte(3 * 1024 = 3072 Byte) anegzeigt wird, Grösse auf Datenträger??? Ob da Windows noch zusätzliche Infos mit reinpackt das war die Hauptfrage??? Irgendwelche Dateiinformationen wie Datum der Erstelltung usw. die halt die Dateigrösse etwas aufblassen???
    MFC 🙂
    Mirsad

    Das hat etwas mit der Clustergrösse deines Dateisystemes zu tun.
    Dein Dateisystem kann nicht eine Datei mit einem Byte abspeichern. Hmmm doch, es kann es schon, aber dann wird trotzdem der gesamte Clusterplatz "vergeben".

    Bitte korrigiert mich, falls es nicht ganz korrekt sein sollte 🕶



  • Ich kann Sky nur bestätigen, wenn du weißt wie groß die Clustergröße ist (ich glaub 1K) dann merkst du auch, dass du nun mal dein Cluster bei 2147Byte grad so überschritten hast. denn wenn du /1024 machst kommst du auf 2,09 sprich er bekommt es nicht in einen Cluster. Cluster sind quasi Segmente, die er anfügt (reserviert) wenn ein Cluster voll ist (um es verständlich auszudrücken). Kannst ja mal den Versuch machen und deine datei mal auf 2047Byte trimmen, dann sollte der Explorer eigentlich 2 KB anzeigen.



  • Hi Leute,
    das würde heisen, wenn die Clustergröße um nur ein Bit überschritten wird, dann rundet das BS auf, so wie meine Handy Rechnung, wenn ich 61 Secunden telefoniere rechnet mein Vodafone mir ganze 2 Minuten ab, bei Minuten Takt(also 120 sec)!? Oder??? 😃
    'mfc'
    Mirsad



  • genau so schaut es aus, nur dass Vodafone hier dein BS ist und dein Takt deine Clustergröße


Anmelden zum Antworten