Как изменить размер файла (если программно) или существует ли функция SetFileSize?

kravam

Друзья! До сей поры не было в этом необъходимости, а поскольку задача тривиальная (вроде бы) в существовании подобной функции я не сомневался.Но вот теперь понадобылось изменить размер файла, а такой api-функции, оказывается, нет!КАк быть? Ума не приложу. Создавать новый файл и копировать в него старый до нужной позиции это несерьёзно. ПОдскажите, а? (Вернее, есть много всяких надписей в google SуеFileSize, но этот какие-то методы... Мне нужна простенькая api-функция Ну, или на худой конец, как это сделать программно? Файл текстовый. ПРобовал запихать в него EOF по нужной позиции (дабы отсечь "хвост" файла)- не получается)Спасибо заранее.
6 ответов

kravam

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


kravam

Не устраивает ответ при всём уважении к отвечающему. Смотри, уменьшить размер вручную (текстовый файл), проще пареной репы. Бинарник- то же самое (открываем hex- редактором и правим)...Я должен поверить что эти действия до сих пор не автоматизированы? Если дело сводится к тому, чтобы в недрах винды найти некоторую стркутурку, соджержащую данные о файле, одно из полей которой- его размер... В общем, надеюсь, что откликнутся люди, етоторые это дело проделывали.


kravam

Уважаю Ваше уважение )))! Если найдется решение вне форума пож-та сюда тоже отпишитесь, а так на тему подписан. Самому интересно...


kravam

SetEndOfFile Function msdn Судя по описанию эта функция способна на это.


kravam

Смотри, уменьшить размер вручную (текстовый файл), проще пареной репы. Бинарник- то же самое (открываем hex- редактором и правим)
А кто тебе сказал что при этом не переписывается весь файл ? В языке C в разных системах функции chsize(), truncate(), ftruncate() которые изменяют размер файла.


kravam

Как вариант еще есть SetFileInformationByHandle. Но ей много чего можно изменить о файле.