Удаление файла в С++

Языки ASM, Pascal, C/C++, Perl, Delphi, PHP, Java...
Программируем сами, помогаем друг другу...

Модераторы: Al_lexx, Sharp, ionika, Happy_MAN, 0xFF, Atom, Serega S.U.

Ответить
AreKs
Сообщения: 12
Зарегистрирован: 08 ноя 2006, 20:09
Откуда: Москва
Контактная информация:

Удаление файла в С++

Сообщение AreKs »

Народ столкнулся с такой проблемой есть переменная типа FILE* надо удалить этот файл не зная пути.
Всё вышесказанное всего лишь моё имхо!!!
Аватара пользователя
VoidVolker
Always watching
Сообщения: 1006
Зарегистрирован: 02 дек 2006, 00:33

Сообщение VoidVolker »

Ну тада файл надо найти. А откуда в этой переменной появляется файл?
Если ты не гонишься за своей мечтой, то ты, пожалуй, не человек, а овощ... капуста например.
Dr. Metall
Сообщения: 18
Зарегистрирован: 31 окт 2006, 16:49
Откуда: Москва
Контактная информация:

Сообщение Dr. Metall »

Как так не зная пути? Т.е. просто удалить первый попавшийся файл?)
P4 1.5 Ghz, мать Intel D850MD, видео ASUS GeForce 3 Ti200, RIMM 512 mb (2x256 mb), Seagate Barracuda 200 Gb, Sound Blaster Audigy 2, система XP SP2
AreKs
Сообщения: 12
Зарегистрирован: 08 ноя 2006, 20:09
Откуда: Москва
Контактная информация:

Сообщение AreKs »

Я в другой функции открываю файл к примеру file_=fopen("C:\1.txt","r+");
Ну вот функция возвращает только переменную file_ она естественно типа FILE* вот мне надо удалить файл связанный с переменной file_
Сразу прошу не писать предложения типа передай ещё и путь, если не знаете лучше промолчите, если есть хоть какая нибудь идея, рад буду выслушать.
Всё вышесказанное всего лишь моё имхо!!!
Аватара пользователя
VoidVolker
Always watching
Сообщения: 1006
Зарегистрирован: 02 дек 2006, 00:33

Сообщение VoidVolker »

функция возвращает только переменную file_....надо удалить файл
Если я все прально понял - значит эта функция берет файл и что-то с ним делает, затем возвращает тока имя файла, а где он находится она не знает. Так? Ну тогда только остается писать алгоритм поиска этого файла. Либо найти где-ть в инете нужную либу. Если же нам известно местоположение этого файла - то можно путь хранить в одной переменной, файл в другой, а потом просто их сложить.
Если ты не гонишься за своей мечтой, то ты, пожалуй, не человек, а овощ... капуста например.
AreKs
Сообщения: 12
Зарегистрирован: 08 ноя 2006, 20:09
Откуда: Москва
Контактная информация:

Сообщение AreKs »

Ну тогда только остается писать алгоритм поиска этого файла.
Чуть подробней как его искать, точнее по каким параметрам?
то можно путь хранить в одной переменной, файл в другой, а потом просто их сложить
Да у нас естественно есть путь, но он объявлен в локальной переменой вернуть её нельзя, почему не спрашивайте, следовательно после завершения функции переменная уничтожаеться, отсюда вопрос что значит сложить переменные?
Если же нам известно местоположение этого файла
Тогда он легко удаляеться стандартной функцией складывать ничего не надо.
Всё вышесказанное всего лишь моё имхо!!!
Alexzy
Сообщения: 7
Зарегистрирован: 08 мар 2007, 10:57
Откуда: Москва

Сообщение Alexzy »

Есть еще одно решение, но оно под Unux. В *nix системмах поддерживающих /proc список открытых файлов(в виде линков) хранится в /proc/<pid>/fd/, так что можно смотреть там.
Аватара пользователя
VoidVolker
Always watching
Сообщения: 1006
Зарегистрирован: 02 дек 2006, 00:33

Сообщение VoidVolker »

Да у нас естественно есть путь, но он объявлен в локальной переменой вернуть её нельзя, почему не спрашивайте, следовательно после завершения функции переменная уничтожаеться, отсюда вопрос что значит сложить переменные?
Ну тогда создать переменную более высокого уровня (например глобальную переменную, ну в крайнем случае можно и файловую) и в этой функции скопировать путь в переменную более выского уровня. А потом при необходимости оттуда ее извлечь.
вопрос что значит сложить переменные?

А что разве CPP не умеет складывать тектовые строки? Ну скажем была строка "C:\" а потом взяли и прибавили к ней строку "WINDOWS" в результате получилась строка "C:\WINDOWS" вот это и есть сложение строк.
.......
А вообще все-таки лучше будет заменить эту локальную переменную с путем на глобальную.
Если ты не гонишься за своей мечтой, то ты, пожалуй, не человек, а овощ... капуста например.
AreKs
Сообщения: 12
Зарегистрирован: 08 ноя 2006, 20:09
Откуда: Москва
Контактная информация:

Сообщение AreKs »

Это не решение проблемы, я же сказал путь вообще не доступен и никокой переменной глобальной нет есть только FILE* и надо обойтись им. Неужели вы думаете я не сохранил бы путь в переменную да тут 1000 способов как его передать., проблеиа в том что нельзя передавать )
Всё вышесказанное всего лишь моё имхо!!!
Аватара пользователя
VoidVolker
Always watching
Сообщения: 1006
Зарегистрирован: 02 дек 2006, 00:33

Сообщение VoidVolker »

Вот теперь понятно, что ты не можешь вмешаться в работу функции и как-то изменить эту функцию. Остается только один вариант - поиск.
Алгоритм поиска примерно такой:
Открываем корневой каталог диска - и проверяем есть ли там нужный файл, если есть проверяем время последнего изменения, и если он создан тока что, то это и есть нужный фал, если нет, то просматриваем в следующем каталоге, и так во всех подкатологах до самого дна.
Если ты не гонишься за своей мечтой, то ты, пожалуй, не человек, а овощ... капуста например.
Ответить