Как изменить размер / удлинить / обрезать файл и оставить больше места в начале?

0

Одним из побочных применений ftruncate() является то, что мы можем изменить размер файла, просто привязывая нули к концу файла, предполагая, что вы запрашиваете новый размер файла, превышающий оригинал. Это похоже на недорогое решение для изменения размера файла, поскольку оно изменяет файловый дескриптор и т.д. Это отличное решение, когда мы хотим, чтобы вновь созданный регион существовал в конце файла (подобно тому, как realloc() предоставляет вам новое пространство после вашего исходного контента).

Но как насчет начала! Что делать, если я хочу изменить размер файла, но получить новое пространство в начале файла? Я не могу поверить, что мне нужно просто скопировать все данные в более позднюю часть файла (или я?). Это будет ужасно трудоемкая операция! Есть ли способ лучше?

Теги:
file
file-io
truncate

1 ответ

1
Лучший ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню