我有一个文件,其中包含其中许多较小文件的数据。我希望这个文件能够一次写入多次(到文件的不同部分)。
我所设想的是将多个100MB文件存储在一个文件中,并存储对这些部分在单个文件中开始和结束的位置的引用。
我的问题是,将100MB字节附加到文件的最佳方法是什么,以便我可以在通过网络下载实际数据时覆盖该虚拟数据。这样,如果另一个下载请求同时开始,它可以开始添加下一个100MB。
有没有更好的方法来做到这一点,而不是简单地将100MB的0写入文件?是否有一种方法可以更有效地扩展文件的分配磁盘空间(请记住,它可能会被写入当前文件的前一个字节)?
答案 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