Форум программистов, компьютерный форум CyberForum.ru

Как опустошить файл, не пересоздавая его? - C++

Восстановить пароль Регистрация
 
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
14.08.2011, 18:04     Как опустошить файл, не пересоздавая его? #1
Файл окрывается к с помощью функции Open() класса CStdioFile. В файле есть какие-то данные. Нужно не пересоздавая файл стереть все данные или какую-то его часть.
Для того чтобы стереть весь файл пишу такой код:
Код
for(int i=0;i<file.GetLength();i++)
{
	file.Write('',1);
}
Но такая реализация не стирает файл полностью.
А так:
Код
for(int i=0;i<file.GetLength();i++)
{
	file.Write(NULL,1);
}
Получаю ошибку выполнения. Как правильно стереть файл полностью?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kpoxa
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
14.08.2011, 18:20     Как опустошить файл, не пересоздавая его? #2
Что именно ты имеешь ввиду под 'опустошением' ?
Преврвтить все байты в нулевые ?
Или обрезать файл и сделать его длиной в 0 байт ?
Тогда и решение будет разным.
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
14.08.2011, 18:47  [ТС]     Как опустошить файл, не пересоздавая его? #3
Имею ввиду обрезать файл и сделать его длинной в 0 байт.
kpoxa
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
14.08.2011, 19:01     Как опустошить файл, не пересоздавая его? #4
Есть функция _chsize.
Параметры найдешь в MSDN.
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
14.08.2011, 19:27  [ТС]     Как опустошить файл, не пересоздавая его? #5
Эта функция изменяет размер файла, а как сделать, чтобы удалить определённую часть файла, не затронув другие части этого же файла?
Вообщем, по такой схеме - выделить строку в файле, удалить её и вставить новую строку.
kpoxa
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
14.08.2011, 20:29     Как опустошить файл, не пересоздавая его? #6
Ну это ясно - chsize может не только обнулять файл. Она может сделать из файла в 20К файл в 10К. Причем отсекается только конец, поэтому если удалять конец файла, то все просто, если надо удалить что-либо из середины, то тут без компрессии не обойдешься. Придется переносить все данные из конца в середину (там где появляется дыра) до тех пор, пока дыр не останется и тогда отсечь лишнее.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2011, 20:49     Как опустошить файл, не пересоздавая его?
Еще ссылки по теме:

C++ Как создать программу в С++, чтобы его можно было запускать как исполняемый .exe файл?
Как открыть файл на чтение и запись, создав его, если его не существует, и перезаписать, если он существует? C++
Где должен находиться файл, чтоб программа его открыла, или как указывать его имя? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
14.08.2011, 20:49  [ТС]     Как опустошить файл, не пересоздавая его? #7
Спасибо!
Yandex
Объявления
14.08.2011, 20:49     Как опустошить файл, не пересоздавая его?
Ответ Создать тему
Опции темы

Текущее время: 04:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru