用虚拟数据填充文件的一部分

时间:2012-02-21 20:56:08

标签: perl

我有一个文件,其中包含其中许多较小文件的数据。我希望这个文件能够一次写入多次(到文件的不同部分)。

我所设想的是将多个100MB文件存储在一个文件中,并存储对这些部分在单个文件中开始和结束的位置的引用。

我的问题是,将100MB字节附加到文件的最佳方法是什么,以便我可以在通过网络下载实际数据时覆盖该虚拟数据。这样,如果另一个下载请求同时开始,它可以开始添加下一个100MB。

有没有更好的方法来做到这一点,而不是简单地将100MB的0写入文件?是否有一种方法可以更有效地扩展文件的分配磁盘空间(请记住,它可能会被写入当前文件的前一个字节)?

1 个答案:

答案 0 :(得分:3)

在某些系统上(但可能不是全部),您可以seek越过文件末尾创建一个空白空间的大文件。

$ perl -e 'open FOO,">/tmp/foo"; seek FOO,1E6,0; print "foo\n"; close FOO'
$ od -c /tmp/foo
0000000  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
3641100   f   o   o  \n
3641104