1

我需要编写一个小工具来消耗磁盘的可用空间(只留下几个 Kilo 字节)来测试一些“低磁盘空间”用例。编码:

new FileStream(filename).SetLength(remaining free bytes - 1024); //leaving 1KB's free space 

但是FileStream.SetLength(long length)如果长度以千兆字节为单位就太慢了,就像将大高清电影复制到磁盘一样慢。(编辑:对不起,我只是意识到我只有在写入可移动闪存时才会遇到这种情况,如果写入其他本地驱动器,速度就足够快了。

所以我想知道,有没有更快的方法来写空白文件(即用零填充)?也欢迎使用 C/C++ 编写代码。还是有其他技巧可以测试“低磁盘空间”情况而无需编写空白文件?

4

2 回答 2

4

您可以通过 Windows API 调用SetFileValidData创建大文件而无需写入它们。

但是,请注意,它不会用零填充文件(这就是它更快的原因)。此外,请仔细阅读该功能的文档,因为存在安全隐患。

于 2012-12-05T09:20:49.350 回答
0

在谷歌搜索后,我被引导到这个 SO 问题: 在 Windows 上创建大文件

这回答了我的问题。

于 2012-12-05T16:30:01.467 回答