【发布时间】:2012-12-05 09:10:15
【问题描述】:
我需要编写一个小工具来消耗磁盘的可用空间(仅留下几个 Kilo 字节)来测试一些“磁盘空间不足”的用例。代码:
new FileStream(filename).SetLength(remaining free bytes - 1024); //leaving 1KB's free space
但FileStream.SetLength(long length) 的长度以千兆字节为单位太慢,就像将大高清电影复制到磁盘一样慢。 (编辑:对不起,我才意识到我只有在写入可移动闪存时才会遇到这种情况,如果写入其他本地驱动器,速度就足够快了。)
所以我想知道,有没有更快的方法来写入空白文件(即用零填充)?也欢迎使用 C/C++ 编写代码。 还是有其他技巧可以测试“磁盘空间不足”的情况而无需编写空白文件?
【问题讨论】:
-
你为什么希望它更快?
-
为什么不创建一个具有非常小的磁盘的虚拟机并在其上进行测试?
-
另外,您的方法甚至可能不可行,具体取决于磁盘的碎片。
-
@leppie 因为我认为与将字节从源文件复制到新文件不同,我需要的只是一个占用磁盘空间的空白文件,没有缓冲区读/写操作,这就是我期望它的原因更快。
-
@kennyzx:读取比正常写入快,所以这永远不会成为瓶颈。除了使用 Matthew Watson 所说的话。
标签: c# performance file-io