我想知道是否可以在C#中写入freespace?我的意思是像FreeSpace.WriteAllBytes()
或像某些碎纸机应用程序那样的东西?
我该怎么办?
答案 0 :(得分:2)
此类特定功能并未内置于C#中,但您可以轻松自行编写, 通过打开文件并将字节(0)写入其中直到disk is full。
请注意,某些文件系统会限制您的max file size。
答案 1 :(得分:0)
如果您的目的只是覆盖硬盘驱动器上的所有可用空间,您可以使用GetDiskFreeSpaceEx
API来确定可用的字节数,并编写一个大的文件(或将其分散到几个文件中)文件)。
P / Invoke for C#:
[DllImport("kernel32")]
public static extern int GetDiskFreeSpaceExW(string dir, ref ulong freeBytesAvailable,
ref ulong totalNumBytes, ref ulong totalFreeBytes);
如果您感兴趣,可以使用像System.Random这样的类来填充带有随机值的字节数组,如果您感兴趣的话。
编辑:不知道System.IO.DriveInfo类,它可能比使用上述API更简单。
答案 2 :(得分:0)
ManagementObject di = new ManagementObject("win32_logicaldisk.deviceid=\"C:\"");
di.Get();
UInt64 freeSpace = (UInt64)di["FreeSpace"]; //in bytes
现在您可以编写通过System.Guid.NewGuid()命名的文件来填充所有空间(使用文件系统簇大小的倍数)。