Заполнить часть файла фиктивными данными - PullRequest
2 голосов
/ 22 февраля 2012

У меня есть один файл, который будет содержать данные для множества небольших файлов внутри него.Мне бы хотелось, чтобы этот файл можно было записывать несколько раз одновременно (в разные части файла).

Я собираюсь хранить много файлов размером 100 МБ в одном файле и ссылаться нагде эти части начинаются и заканчиваются в одном файле.

Мой вопрос заключается в том, как лучше всего добавить 100 МБ байтов в файл, чтобы я мог перезаписать эти фиктивные данные фактическими данными в том виде, как они естьзагружается по сети.Таким образом, если в это же время начинается другой запрос на загрузку, он может начать добавлять следующие 100 МБ.

Есть ли лучший способ сделать это, чем просто записать в файл 100 МБ 0?Есть ли способ для более эффективного расширения выделенного дискового пространства для файла (имея в виду, что он может быть записан в настоящее время для предыдущих байтов файла)?

1 Ответ

3 голосов
/ 22 февраля 2012

В некоторых системах (но, вероятно, не во всех) вы можете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...