2012-02-21 38 views
2

我有一个文件将包含其中很多较小文件的数据。我希望这个文件能够被一次写入多次(到文件的不同部分)。使用虚拟数据填充文件的一部分

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

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

有没有更好的方法来做到这一点,而不是简单地写100MB的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 
+0

太棒了,谢谢。 – GoldenNewby 2012-02-21 21:11:46