Vra

Ek het gewonder of dit moontlik is om Free Space om te skryf in C #? Ek bedoel iets soos FreeSpace.WriteAllBytes() of soos wat sommige shredder programme doen?

Hoe kan ek dit doen?

Was dit nuttig?

Oplossing

As jou bedoeling is bloot om al die vrye ruimte beskikbaar te vervang op 'n hardeskyf, kan jy die GetDiskFreeSpaceEx API om vas te stel hoeveel grepe is beskikbaar en 'n lêer te skryf dat 'n groot (of versprei dit uit onder verskeie lêers).

P / roep vir C #:

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

Jy kan 'n klas soos System.Random gebruik om 'n verskeidenheid van grepe met 'n arbitrêre waardes vul voordat hulle skryf, as wat jy dalk belang.

Edit:. nie bewus was van die System.IO.DriveInfo klas, wat makliker as die gebruik van die genoemde API kan wees

Ander wenke

Hierdie spesifieke funksie is nie gebou in C #, maar jy kan maklik skryf dit self, deur die opening van 'n lêer en skryf grepe (0) daarin totdat die skyf volle .

Let sommige lêer stelsels sal jou maksimum lêer grootte beperk.

Dit het vir my gewerk om die vrye ruimte van 'n ry (C #) kry, via System.Management

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

Nou kan jy lêers genaamd via System.Guid.NewGuid () skryf om te vul al die ruimte (gebruik 'n veelvoud van cluster grootte van die lêerstelsel se).

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top