当长度为千兆字节时,FileStream.SetLength(长度)太慢

时间:2012-12-05 09:10:16

标签: c# performance file-io

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

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

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

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

2 个答案:

答案 0 :(得分:3)

您可以创建大型文件,而无需通过Windows API调用SetFileValidData写入这些文件。

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

答案 1 :(得分:0)

谷歌搜索后,我被引导到这个问题: Creating big file on Windows

这回答了我的问题。