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 :wink:

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.