写入自由空间

时间:2009-12-29 06:24:40

标签: c# file shred

我想知道是否可以在C#中写入freespace?我的意思是像FreeSpace.WriteAllBytes()或像某些碎纸机应用程序那样的东西?

我该怎么办?

3 个答案:

答案 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)

通过System.Management

,这对我来说可以获得驱动器的可用空间(C#)
ManagementObject di = new ManagementObject("win32_logicaldisk.deviceid=\"C:\"");
di.Get();
UInt64 freeSpace = (UInt64)di["FreeSpace"]; //in bytes

现在您可以编写通过System.Guid.NewGuid()命名的文件来填充所有空间(使用文件系统簇大小的倍数)。