Maximale Dateigröße auf Windows-Plattform

487
John Z. Li

Laut dieser Wikipedia-Seite kann die Größe einer einzelnen Datei unter Win10 bis zu 8 PB mit NTFS betragen. Die Strukturstat ist jedoch als definiert

struct stat { _dev_t st_dev; _ino_t st_ino; unsigned short st_mode; short st_nlink; short st_uid; short st_gid; _dev_t st_rdev; _off_t st_size; time_t st_atime; time_t st_mtime; time_t st_ctime; }; 

wobei off_t als Typ definiert ist. Das bedeutet ein Limit von etwa 4 GB. Gemäß dieser Stackoverflow-Seite kann die Größe einer Datei selbst für ein 32-Bit-Betriebssystem größer sein.

Wenn ich etwas falsch verstanden habe, wie kann man dann mit stat stat zuverlässig die Größe einer Datei erhalten. Was passiert außerdem, wenn die Dateigröße die Grenze des langen Typs überschreitet?

5

1 Antwort auf die Frage

4
harrymc

Verwenden Sie stattdessen die 64-Bit-Versionen der stat-Funktionen .

Die __stat64-Struktur aus der stat.hInclude-Datei:

struct _stat64 { _dev_t st_dev; _ino_t st_ino; unsigned short st_mode; short st_nlink; short st_uid; short st_gid; _dev_t st_rdev; __int64 st_size; __time64_t st_atime; __time64_t st_mtime; __time64_t st_ctime; }; 

Hier st_sizeist __int64was 64-Bit und nicht 32-Bit.

Vielen Dank. Ich dachte __stat64 ist für 64-Bit-Betriebssysteme. John Z. Li vor 5 Jahren 0
Wenn Sie sich auf einem 32-Bit-System befinden, können Sie die Funktion [GetFileSize] (https://docs.microsoft.com/de-de/windows/desktop/api/fileapi/nf-fileapi-getfilesize) verwenden. harrymc vor 5 Jahren 0
Genau das suche ich John Z. Li vor 5 Jahren 0