Re: Как создать "Дырку в файле"
От: Pzz Россия https://github.com/alexpevzner
Дата: 09.07.09 16:22
Оценка:
Здравствуйте, NovaCxarmulo, Вы писали:

NC>Собственно вопрос — как средствами .NET можно сделать в файле "дырку" в нужном месте.

NC>Желательно кросс-платформенная реализация (прога будет работать на Windows и Linux).

В UNIX'е чтобы сделать в файле дырку, надо сделать lseek() вперед, за конец файла, а потом что-нибудь записать. Тогда пространство между старым концом файла и началом новой записи будет дыркой.

Про венду читайте тута сами.

Обратите внимание, в UNIX вы не можете пробить дырку в середине существующего файла, вы можете лишь дописать дырку плюс данные в хвост. В венде не знаю, мне лениво это читать

В общем и целом, ваша идея не кажется мне очень уж хорошей. Во-первых, у меня нет уверенности, что базы данных так уж плохо работают с BLOB'ами. Я бы попробовал для начала. Во-вторых, если уж хранить BLOB'ы в отдельном файле, я бы выделял пространство в этом файле кусками, а в базе хранил бы ссылки на эти куски. В таком случае, вам не нужны дырки, т.к. вы заполните их при следующем выделении. В-третьих, sparse files будут вести себя неожиданно в ряде случаев. Например, если вы скопируете такой файл, велика вероятность, что дырки "зарастут", и станут настоящими блоками, заполненными нулями.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.