Ruby可以动态增加文件大小以进行测试

这可能听起来很奇怪,或者你为什么要那样做。

我正在尝试编写一个黄瓜function来测试上传大图像文件(> 16M)因此,我不想将大文件存储在github或我的项目中。 我正在使用imagemagick创建一个图像,但据我所知,只有1M。 我可以在ruby中增加文件大小吗? 我不关心文件内的内容,只关心文件大小。 谢谢,无论如何我可以欺骗黄瓜相信我,我上传的文件很大?

谢谢

dd(1)工具可以使用非常小的磁盘空间使文件非常大:

 $ dd if=/dev/zero of=huge bs=1024 count=1 seek=100000 1+0 records in 1+0 records out 1024 bytes (1.0 kB) copied, 4.9857e-05 s, 20.5 MB/s $ ls -lh huge -rw-r--r-- 1 user user 98M 2011-07-03 02:43 huge $ du -h huge 12K huge 

huge的文件长度为102400000字节。 (大约98M。)但是它只需要12千字节的磁盘,因为dd(1)seek参数会导致它开始写入“文件”。 如果读取了较早的字节,操作系统将提供无穷无尽的零流。 (0x00种零,不是ASCII类型的零:“0”。)

如果你想在Ruby中复制它,你可以使用File#seekfunction:

 irb> f=File.new("huge", "w") => # irb> f.seek(100000 * 1024) => 0 irb> f.write("hello") => 5 irb> f.close() => nil irb> ^D $ ls -lh huge -rw-r--r-- 1 sarnold sarnold 98M 2011-07-03 02:47 huge 

ruby代码:

 f=File.new("100MB", "w") f.seek(100000 * 1024) f.write("hello") f.close()