Domanda

Mi chiedevo se è possibile scrivere a FreeSpace in C #? Voglio dire qualcosa come FreeSpace.WriteAllBytes() o piace quello che alcune applicazioni trituratore fanno?

Come posso fare così?

È stato utile?

Soluzione

Se la vostra intenzione è semplicemente quella di sovrascrivere tutto lo spazio libero disponibile su un disco rigido, è possibile utilizzare il GetDiskFreeSpaceEx API per determinare quanti byte sono disponibili e scrivere un file che di grandi dimensioni (o stese tra diversi file).

P / Invoke per C #:

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

È possibile utilizzare una classe come System.Random di riempire un array di byte con valori casuali prima di scriverle, se che potrebbe interessarti.

Modifica:. non era a conoscenza della classe System.IO.DriveInfo, che potrebbe essere più semplice utilizzando l'API citato

Altri suggerimenti

Questa funzionalità specifiche non è costruito in C #, ma si potrebbe facilmente scrivere voi stessi, aprendo un file e crei byte (0) in essa finché il disco è piena .

prendere atto alcuni file system limiterà i tuoi dimensione massima del file .

Questo ha funzionato per me per ottenere lo spazio libero di un disco (C #), tramite System.Management

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

Ora è possibile scrivere file denominati via System.Guid.NewGuid () per riempire tutto lo spazio (utilizzare un multiplo della dimensione dei cluster del file system).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top