Seite 1 von 1
[Qt4.11] Restspeicherplatz
Verfasst: 5. März 2006 17:57
von Esleborn
hi,
hat einer ne Idee wie ich herausbekommen kann, wieviel (HDD-)Speicher in einem spezifischen Pfad (zB den Windowslaufwerken) noch verfügbar ist...?
Thx
Elgrimm Esleborn
Verfasst: 6. März 2006 08:02
von macman
Da gibt es wohl nichts plattformunabhängiges. Bei Windows funktioniert es so:
Code: Alles auswählen
ULONG64 FreeSpace = 0;
ULARGE_INTEGER FreeBytesAvailableToCaller;
ULARGE_INTEGER TotalNumberOfBytes;
ULARGE_INTEGER TotalNumberOfFreeBytes;
if (!GetDiskFreeSpaceEx(testpath.utf16(), &FreeBytesAvailableToCaller, &TotalNumberOfBytes, &TotalNumberOfFreeBytes))
{
showErrorMessage(GetLastError(), NULL, NULL);
}
FreeSpace = TotalNumberOfFreeBytes.QuadPart;
Verfasst: 6. März 2006 09:54
von Nassian
Ist zwar eine extrem ineffiziente und bei der Verwendung von Quotas auch sinnlose Methode, aber zumindest der Vollständigkeit halber sollte sie erwähnt werden:
In einer Endlosschleife könntest du ein File wachsen lassen und wenn ein NoSpaceLeft Error geworfen wird, kennst du die Größe. Datei löschen nicht vergesse

Verfasst: 6. März 2006 10:06
von macman
Nassian hat geschrieben:In einer Endlosschleife könntest du ein File wachsen lassen und wenn ein NoSpaceLeft Error geworfen wird, kennst du die Größe. Datei löschen nicht vergesse

Uaaahh, bei heutigen Festplattengrößen hat man schnell mal etliche Gigs frei, und dann? FAT32 kann z.B. nur Dateien bis 4GB. Hat mich letztlich einiges an Nerven gekostet, hat aber nichts mit Qt zu tun. Man bedenke nur wie sich diese Methode auf die Lebensdauer von Festplatten auswirken würde

Verfasst: 6. März 2006 14:13
von Nassian
Ja, solche Primatenfilesysteme darf man halt nicht einsetzen

Diese Methode war ja auch mehr als Scherz gedacht

Verfasst: 6. März 2006 14:48
von Esleborn
ok, abgesehen von den wachsenden Files...
weiß einer selbiges für max und linux-sytseme?
Verfasst: 6. März 2006 21:35
von macman
Immer noch keine Antwort von der Linux-Fraktion? Vielleicht hast Du es auch inzwischen im I-Net gefunden

Nimm df, funktioniert auch beim Mac.