Frage

Ich frage mich, ob es möglich ist, auf freien Speicherplatz in C # zu schreiben? Ich meine so etwas wie FreeSpace.WriteAllBytes() oder wie das, was einige Shredder-Anwendungen tun?

Wie kann ich das tun?

War es hilfreich?

Lösung

Wenn Ihre Absicht ist einfach alle den freien Speicherplatz auf einer Festplatte zur Verfügung zu überschreiben, können Sie die GetDiskFreeSpaceEx API, wie viele Bytes zur Verfügung stehen, um zu bestimmen und eine Datei, die große (oder auf mehrere Dateien ausgebreitet).

P / Invoke für C #:

[DllImport("kernel32")]
public static extern int GetDiskFreeSpaceExW(string dir, ref ulong freeBytesAvailable,
    ref ulong totalNumBytes, ref ulong totalFreeBytes);

Sie können eine Klasse wie System.Random verwenden, um ein Array von Bytes mit zufälligen Werten zu füllen, bevor sie, wenn das könnten Sie interessieren zu schreiben.

Edit:. War der System.IO.DriveInfo Klasse nicht bewusst, die einfacher ist als mit der genannten API könnte

Andere Tipps

Eine solche spezifische Funktionalität ist nicht in C # gebaut, aber man konnte es leicht selbst schreiben, indem eine Datei und Schreiben von Bytes Öffnung (0) hinein, bis die Platte ist voll .

Beachten Sie einige Dateisysteme maximale Dateigröße begrenzen.

Das hat für mich gearbeitet den freien Speicherplatz eines Laufwerks (C #) zu bekommen, über System.Management

ManagementObject di = new ManagementObject("win32_logicaldisk.deviceid=\"C:\"");
di.Get();
UInt64 freeSpace = (UInt64)di["FreeSpace"]; //in bytes

Jetzt können Sie Dateien über System.Guid.NewGuid () mit dem Namen schreiben den ganzen Raum zu füllen (ein Vielfaches der Clustergröße Dateisystem verwenden).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top