我想知道是否可以在 C# 中写入可用空间?我的意思是类似于FreeSpace.WriteAllBytes()
或类似于某些碎纸机应用程序所做的事情?
我该怎么做?
如果您的意图只是覆盖硬盘驱动器上的所有可用空间,您可以使用GetDiskFreeSpaceEx
API 来确定可用字节数并写入那么大的文件(或将其分散到多个文件中)。
C#的P/Invoke:
[DllImport("kernel32")]
public static extern int GetDiskFreeSpaceExW(string dir, ref ulong freeBytesAvailable,
ref ulong totalNumBytes, ref ulong totalFreeBytes);
如果您可能感兴趣,您可以使用 System.Random 之类的类在写入字节数组之前用随机值填充它们。
编辑:不知道 System.IO.DriveInfo 类,这可能比使用提到的 API 更简单。
这有助于我通过System.Management获得驱动器的可用空间(C#)
ManagementObject di = new ManagementObject("win32_logicaldisk.deviceid=\"C:\"");
di.Get();
UInt64 freeSpace = (UInt64)di["FreeSpace"]; //in bytes
现在您可以编写通过 System.Guid.NewGuid() 命名的文件来填满所有空间(使用文件系统集群大小的倍数)。