Здравствуйте, NovaCxarmulo, Вы писали:
NC>Собственно вопрос — как средствами .NET можно сделать в файле "дырку" в нужном месте.
NC>Желательно кросс-платформенная реализация (прога будет работать на Windows и Linux).
В UNIX'е чтобы сделать в файле дырку, надо сделать lseek() вперед, за конец файла, а потом что-нибудь записать. Тогда пространство между старым концом файла и началом новой записи будет дыркой.
Про венду
читайте тута сами.
Обратите внимание, в UNIX вы не можете пробить дырку в середине существующего файла, вы можете лишь дописать дырку плюс данные в хвост. В венде не знаю, мне лениво это читать
В общем и целом, ваша идея не кажется мне очень уж хорошей. Во-первых, у меня нет уверенности, что базы данных так уж плохо работают с BLOB'ами. Я бы попробовал для начала. Во-вторых, если уж хранить BLOB'ы в отдельном файле, я бы выделял пространство в этом файле кусками, а в базе хранил бы ссылки на эти куски. В таком случае, вам не нужны дырки, т.к. вы заполните их при следующем выделении. В-третьих, sparse files будут вести себя неожиданно в ряде случаев. Например, если вы скопируете такой файл, велика вероятность, что дырки "зарастут", и станут настоящими блоками, заполненными нулями.