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

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

Войти
Регистрация
Восстановить пароль
 
EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
#1

Удалить файл с указанной фразой в названии - C++

21.02.2014, 14:40. Просмотров 317. Ответов 8
Метки нет (Все метки)

В общем, у нас есть файл "name_3435536362.txt". Символы "3435536362" у каждого пользователя свои. Нужно организовать удаление файла таким образом: удалить файл "name_*", где * - это указанные выше символы. То бишь, нужно удалить все файлы, в названии которых стоит "name_".

Сам код удаления:

C++
1
2
3
4
5
6
7
8
if((p = fopen("D:/Program Files/name_3435536362.txt", "w"))== NULL)
            {
                puts( "\nФайл не найден!\n" );
                getch();
                exit(1);
            }
        fclose( p );
        puts( "\nФайл успешно очищен!\n");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2014, 14:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить файл с указанной фразой в названии (C++):

Сформируйте выходной файл, вставив в первый входной файл содержимое второго входного файла с указанной позиции - C++
Помогите решить задачу. Даны два входных текстовых файла. Сформируйте выходной файл, вставив в первый входной файл содержимое второго...

В заданном пользователем тексте удалить слова, начинающиеся с указанной буквы - C++
Помогите решить задачу. В заданном пользователем тексте удалить слова, начинающиеся с указанной буквы. нельзя пользоваться стандартными...

Из заданной строки удалить слова, длина которых меньше указанной. - C++
Помогите написать программу которая из заданной символьной строки удаляет слова длина которых меньше указанной пользователем.

1. Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными э - C++
1. Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с...

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

Затрудние в названии иерархии классов - C++
Здравствуйте камрады. Помогите обозвать иерархию классов, в голову ничего толкового не приходит. struct Card1 { std::string...

8
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
21.02.2014, 15:32 #2
Получить список файлов в заданной директории.
Отфильтровать по name_*
Удалить, используя имена из отфильтрованного списка.

Вроде все

Можно без списка, получить имя - сравнить - удалить.
1
EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
21.02.2014, 16:03  [ТС] #3
На теории это хорошо, но хотелось бы кодами это все, я подобный алгоритм пытался вывести, но безуспешно
0
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
21.02.2014, 16:15 #4
Цитата Сообщение от EragonJKee Посмотреть сообщение
но хотелось бы кодами это все
Если под windows, то вот. Только добавить сравнение и удаление.
Если POSIX, то вот. Аналогично добавить сравнение и удаление.
1
EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
21.02.2014, 16:21  [ТС] #5
Проверю - отпишусь.
0
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
21.02.2014, 23:25 #6
Можно что то с boost filesystem попробовать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <boost/filesystem.hpp>
 
namespace fs = boost::filesystem;
 
int main()
{
   fs::path p("name_"); // папка name_ в текущем каталоге где лежат обрабатываемые файлы
   std::vector<fs::path> files {fs::directory_iterator(p), fs::directory_iterator()};
   //for (const auto& p : files) std::cout << p << "\n";
 
   std::for_each(files.begin(), files.end(), [](const fs::path p)
   {
      if (fs::is_regular_file(p) && fs::extension(p) == ".txt")
      {
         if ("name_" == p.filename().string().substr(0, 5))
            fs::remove(p);
      }
   });
 
   return 0;
}
1
EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
22.02.2014, 19:56  [ТС] #7
DrOffset, не прокатило.
DiffEreD, тут папка удаляется, а мне нужен файл.
0
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.02.2014, 20:27 #8
EragonJKee, там удаляется то что в переменной path, - после проверки условия if там точно будет имя файла который начинается на name_. Я просто название папки сбивающее с толку выбрал.
1
EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
22.02.2014, 20:35  [ТС] #9
Видимо в коде не так разобрался, спасибо, попробую еще
0
22.02.2014, 20:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2014, 20:35
Привет! Вот еще темы с ответами:

Греческие буквы в названии файла - C++
Есть файл в кодировке ISO8859-7 в котором построчно хранятся названия файлов которые необходимо прочитать. В названиях этих файлов...

Создание файлов с переменной в названии - C++
string adrec = &quot;C:\\form\\&quot;+name+&quot;_&quot;+surname+&quot;.txt&quot;; ofstream file(adrec) ; как реализовать нормально эту мысль? name, surname...

Удалить куку содержащую в названии подстроку - JavaScript
Как удалить куку содержащую в названии указанную подстроку. function removeCookie(sbstr) { var name =...

Не выходит открыть файл, в названии которого кириллица (FASM) - Assembler
format PE GUI 4.0 entry start include 'win32a.inc' ;section '.data' data readable writeable dataArr db...


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

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

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