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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
#1

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

14.08.2011, 18:04. Просмотров 819. Ответов 6
Метки нет (Все метки)

Файл окрывается к с помощью функции 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);
}
Получаю ошибку выполнения. Как правильно стереть файл полностью?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 18:04     Как опустошить файл, не пересоздавая его?
Посмотрите здесь:

C++ Как открыть бинарный файл, не зная его структуру?
Как удалить файл или изменить его тип C++
C++ Дан символьный файл f. Добавить в его конец символы e,n,d (если это необходимо, использовать дополнительный файл g ).
Как запихнуть в exe html файл и открыть его через нужный мне браузер? C++
Как искать в файле и записать его в новый файл? C++
Подскажите, как очистить файл, после его работы C++
C++ Есть файл со звуком как его прослушать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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++
Как преобразовать файл в биты (в нули и единицы), чтобы потом можно было его зашифровать в код Грея? C++
Где должен находиться файл, чтоб программа его открыла, или как указывать его имя? C++
Дан файл. Надо отсортировать этот файл в порядке убывания длин его строк C++
Как получить готовый .exe файл, чтобы запускать его без IDE C++

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

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

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