Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.89
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,942
Записей в блоге: 1
#1

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

17.11.2011, 13:45. Просмотров 3822. Ответов 14
Метки нет (Все метки)

Прошу подскажите функцию для удаления файла на жестком диске.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 13:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос функцию для удаления файла на жестком диске (C++):

Разработать функцию для удаления вводимых с клавиатуры чисел из бинарного файла - C++
[/OFF Помогите на писать программу по сишке Разработать ф-цию , в которой вводимые с клавиатуры числа удаляются из бинарного файла....

Пространство на жестком диске - C++
Всем салам! У меня такой вопрос, место которое занимает папка "Пользователи"(в моих документах) весит=8гб, а внутренностей всего на =30мб!...

Как выбрать определенные файлы на жестком диске - C++
как выбрать определенные файлы которые находятся на жестком диске?

Обработчик прерывания контроллера накопителя на жестком магнитном диске - C++
Добрый вечер! В лабораторной работе требуется написать свой обработчик прерывания контроллера НЖМД, т е заменить в векторе прерываний...

Написать функцию для удаления строки из двумерного массива - C++
. Написать функцию для удаления строки из двумерного массива. Оставшиеся строки должны быть расположены плотно, недостающие элементы...

Разработайте функцию для удаления из Си-программы всех комментариев - C++
Помогите, пожалуйста, нужно разработать: функцию для удаления из Си-программы всех комментариев. Аккуратно обращаться с «закавыченными»...

14
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
17.11.2011, 13:50 #2
Sylar9, boost::filesystem::remove
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,942
Записей в блоге: 1
17.11.2011, 13:54  [ТС] #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Sylar9, boost::filesystem::remove
а пример можешь превисти
0
-=ЮрА=-
Заблокирован
Автор 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/library/a9skzxhx(v=vs.80).aspx)
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,942
Записей в блоге: 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/library/a9skzxhx(v=vs.80).aspx)
Спасибо. а где эти все функции написаны
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,942
Записей в блоге: 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/library/a9skzxhx(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;
}
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 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
0
-=ЮрА=-
Заблокирован
Автор FAQ
17.11.2011, 14:13 #8
Цитата Сообщение от Sylar9 Посмотреть сообщение
remove("D:\1\*.exe");
- ну дык по маске не выйдет нужно конкретный путь указывать(сначала программа должна "найти файл"), если нужно удаление по маске посмотри мой пост здесь Поиск файла по шаблону
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,942
Записей в блоге: 1
17.11.2011, 14:17  [ТС] #9
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- ну дык по маске не выйдет нужно конкретный путь указывать(сначала программа должна "найти файл"), если нужно удаление по маске посмотри мой пост здесь Поиск файла по шаблону
а проше не как?
0
-=ЮрА=-
Заблокирован
Автор 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() примерно схож с тем кодом что вам привёл, в бусте многие алгоритмы уже зашиты в функции, без него эти алгоритмы нужно писать самому
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
17.11.2011, 14:28 #11
-=ЮрА=-, Просто мне лень было забивать в код имя файла решил передавать из консоли.
operator /= в boost::filesystem:ath присоединяет к пути переданную строку, разбираясь сам с форматом соединения взависимости от оси, только и всего.
1
-=ЮрА=-
Заблокирован
Автор FAQ
17.11.2011, 14:32 #12
ForEveR, т.е программа должна работать через командную строку, парметром которой будет удаляемая дирректория, а как задаётся маска поиска???
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
17.11.2011, 14:33 #13
-=ЮрА=-, Не-не. Параметр - имя файла. curdir() возвращает текущую дирректорию.
1
-=ЮрА=-
Заблокирован
Автор FAQ
17.11.2011, 14:39 #14
Цитата Сообщение от ForEveR Посмотреть сообщение
Параметр - имя файла.
- т.е только файл удаляем, ясно. Ещё хотел для себя узнать в boost::filesystem::remove можно ли каким то образом вбить маску и передать не путь к файлу а путь к дирректории или это функция единичного файлового удаления???

Не по теме:

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

0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 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
1
17.11.2011, 15:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 15:12
Привет! Вот еще темы с ответами:

Нужно написать функцию compress для удаления повторяющихся букв в слове - C++
Function - Compress(s,t). Purpose - замена в строке s множественных вхождений символа t на одно. Например слово: &quot;Helllllooolooloo&quot; ...

Односвязные списки. Реализовать функцию для удаления строчки из структуры по заданному номеру - C++
Всем привет, не знаю создавалась ли подобная тема (нашел кое что похожее но не помогло) Столкнулся с проблемой, никак не могу сделать...

Хочу написать функцию для удаления всех node у которых одинаковые значения - C++
писал вот так, но почему то не работает, то есть для начала хочу просто отображать индексы таких node, а потом подумаю на удаление. void...

Написать программу, которая дописывает в файл Phone/txt, находящийся на диске А фамилию и номер телефона. Если файла на диске нет, то программа должна - C++
Написать программу, которая дописывает в файл Phone/txt, находящийся на диске А фамилию и номер телефона. Если файла на диске нет, то...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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