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

функцию для удаления файла на жестком диске - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.89
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
17.11.2011, 13:45     функцию для удаления файла на жестком диске #1
Прошу подскажите функцию для удаления файла на жестком диске.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 13:45     функцию для удаления файла на жестком диске
Посмотрите здесь:

C++ Написать программу, которая дописывает в файл Phone/txt, находящийся на диске А фамилию и номер телефона. Если файла на диске нет, то программа должна
C++ Разработайте функцию для удаления из Си-программы всех комментариев
Пространство на жестком диске C++
C++ Написать функцию для удаления строки из двумерного массива
C++ Односвязные списки. Реализовать функцию для удаления строчки из структуры по заданному номеру
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.11.2011, 13:50     функцию для удаления файла на жестком диске #2
Sylar9, boost::filesystem::remove
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
17.11.2011, 13:54  [ТС]     функцию для удаления файла на жестком диске #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Sylar9, boost::filesystem::remove
а пример можешь превисти
-=ЮрА=-
Заблокирован
Автор FAQ
17.11.2011, 14:01     функцию для удаления файла на жестком диске #4
Цитата Сообщение от Sylar9 Посмотреть сообщение
Прошу подскажите функцию для удаления файла на жестком диске.
- если без буста, то либо
C
1
remove("Путь к файлу"); //нужен stdio.h
либо попробовать
C
1
_rmdir("Путь к файлу");  //нужен direct.h
Добавлено через 2 минуты
Так же во всех более мене продвинутых файловых классах есть метод Remove
К примеру CFile::Remove (http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx)
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
17.11.2011, 14:05  [ТС]     функцию для удаления файла на жестком диске #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- если без буста, то либо
C
1
remove("Путь к файлу"); //нужен stdio.h
либо попробовать
C
1
_rmdir("Путь к файлу");  //нужен direct.h
Добавлено через 2 минуты
Так же во всех более мене продвинутых файловых классах есть метод Remove
К примеру CFile::Remove (http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx)
Спасибо. а где эти все функции написаны
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
17.11.2011, 14:10  [ТС]     функцию для удаления файла на жестком диске #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- если без буста, то либо
C
1
remove("Путь к файлу"); //нужен stdio.h
либо попробовать
C
1
_rmdir("Путь к файлу");  //нужен direct.h
Добавлено через 2 минуты
Так же во всех более мене продвинутых файловых классах есть метод Remove
К примеру CFile::Remove (http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx)
Слушай я чего я не могу удалять все файле с одни расширениям например *.exe
Вот код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
  
remove("D:\1\*.exe");
cout << "Delete" << endl;
  
 
    return 0;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.11.2011, 14:11     функцию для удаления файла на жестком диске #7
C++
1
2
3
4
5
6
7
8
9
#include <boost/filesystem.hpp>
#include <iostream>
 
//delete file in current dir. name contains in argv[1]
int main(int argc, char* argv[])
{
   namespace fs = boost::filesystem;
   fs::remove(fs::current_path() /= argv[1]);
}
Bash
1
2
3
4
5
6
forever@pterois:~/My_pro1/cpp_pro$ g++ -o file file.cpp -I/usr/include/boost /usr/lib/libboost_system.so.1.46.1 -lboost_filesystem
forever@pterois:~/My_pro1/cpp_pro$ ls
array.txt  file  file.cpp
forever@pterois:~/My_pro1/cpp_pro$ ./file array.txt
forever@pterois:~/My_pro1/cpp_pro$ ls
file  file.cpp
-=ЮрА=-
Заблокирован
Автор FAQ
17.11.2011, 14:13     функцию для удаления файла на жестком диске #8
Цитата Сообщение от Sylar9 Посмотреть сообщение
remove("D:\1\*.exe");
- ну дык по маске не выйдет нужно конкретный путь указывать(сначала программа должна "найти файл"), если нужно удаление по маске посмотри мой пост здесь Поиск файла по шаблону
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
17.11.2011, 14:17  [ТС]     функцию для удаления файла на жестком диске #9
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- ну дык по маске не выйдет нужно конкретный путь указывать(сначала программа должна "найти файл"), если нужно удаление по маске посмотри мой пост здесь Поиск файла по шаблону
а проше не как?
-=ЮрА=-
Заблокирован
Автор FAQ
17.11.2011, 14:25     функцию для удаления файла на жестком диске #10
Цитата Сообщение от Sylar9 Посмотреть сообщение
а проше не как?
- если не знаем путей к удаляемым файлам и нет буста, то скорей всего никак(знаю в ListCtrl есть функция получения списка файлов текущего каталога - но поверте это будет уже не консоль и разобраться Вам ещё сложней будет), в функции

ForEveR,
Цитата Сообщение от ForEveR Посмотреть сообщение
fs::remove(fs::current_path() /= argv[1]);
он получает список файлов в текущей директории fs::current_path() и насколько я понимаю сообщает функции fs::remove что сам экзешник выполняющий удаление трогать не надо (только вот почему argv[1] а не argv[0] ) Но функционал fs::current_path() примерно схож с тем кодом что вам привёл, в бусте многие алгоритмы уже зашиты в функции, без него эти алгоритмы нужно писать самому
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.11.2011, 14:28     функцию для удаления файла на жестком диске #11
-=ЮрА=-, Просто мне лень было забивать в код имя файла решил передавать из консоли.
operator /= в boost::filesystem:ath присоединяет к пути переданную строку, разбираясь сам с форматом соединения взависимости от оси, только и всего.
-=ЮрА=-
Заблокирован
Автор FAQ
17.11.2011, 14:32     функцию для удаления файла на жестком диске #12
ForEveR, т.е программа должна работать через командную строку, парметром которой будет удаляемая дирректория, а как задаётся маска поиска???
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.11.2011, 14:33     функцию для удаления файла на жестком диске #13
-=ЮрА=-, Не-не. Параметр - имя файла. curdir() возвращает текущую дирректорию.
-=ЮрА=-
Заблокирован
Автор FAQ
17.11.2011, 14:39     функцию для удаления файла на жестком диске #14
Цитата Сообщение от ForEveR Посмотреть сообщение
Параметр - имя файла.
- т.е только файл удаляем, ясно. Ещё хотел для себя узнать в boost::filesystem::remove можно ли каким то образом вбить маску и передать не путь к файлу а путь к дирректории или это функция единичного файлового удаления???

Не по теме:

PS:Надо наверное пощупать буст, хотя пока и без него обходился но интерес берёт верх)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 15:12     функцию для удаления файла на жестком диске
Еще ссылки по теме:

C++ Нужно написать функцию compress для удаления повторяющихся букв в слове
Разработать функцию для удаления вводимых с клавиатуры чисел из бинарного файла C++
Написать программу для удаления ленты в середине текстового файла C++

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.11.2011, 15:12     функцию для удаления файла на жестком диске #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <boost/filesystem.hpp>
#include <boost/regex.hpp>
#include <iostream>
 
//delete all files with needed extension in current dir. extension contains in argv[1]
int main(int argc, char* argv[])
{
   namespace fs = boost::filesystem;
   boost::regex reg(std::string("\.+.") + argv[1]);
   for (fs::directory_iterator iter = fs::directory_iterator(fs::current_path()); 
        iter != fs::directory_iterator(); ++iter)
   {
      if (boost::regex_match(iter->path().generic_string(), reg))
      {
         fs::remove(iter->path());
      }
   }
}
Пример по маске через regex.

Bash
1
2
3
4
5
6
forever@pterois:~/My_pro1/cpp_pro$ touch some.exe no.exe what.exe else.exe
forever@pterois:~/My_pro1/cpp_pro$ ls
else.exe  file  file.cpp  no.exe  some.exe  what.exe
forever@pterois:~/My_pro1/cpp_pro$ ./file exe
forever@pterois:~/My_pro1/cpp_pro$ ls
file  file.cpp
Добавлено через 4 минуты
-=ЮрА=-, Remove работает только с fs:ath. Еще есть remove_all рекурсивно удаляющая все что можно.

Добавлено через 19 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <boost/filesystem.hpp>
#include <iostream>
 
//delete all files with needed extension in current dir. extension contains in argv[1]
int main(int argc, char* argv[])
{
   namespace fs = boost::filesystem;
   for (fs::directory_iterator iter = fs::directory_iterator(fs::current_path()); 
        iter != fs::directory_iterator(); ++iter)
   {
      if (iter->path().extension() == std::string(".") + argv[1])
      {
         fs::remove(iter->path());
      }
   }
}
В догонку вариант без регекса.

Bash
1
2
3
4
5
6
forever@pterois:~/My_pro1/cpp_pro$ touch some.exe no.exe what.exe else.exe
forever@pterois:~/My_pro1/cpp_pro$ ls
else.exe  file  file.cpp  no.exe  some.exe  what.exe
forever@pterois:~/My_pro1/cpp_pro$ ./file exe
forever@pterois:~/My_pro1/cpp_pro$ ls
file  file.cpp
Yandex
Объявления
17.11.2011, 15:12     функцию для удаления файла на жестком диске
Ответ Создать тему
Опции темы

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