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

C++

Войти
Регистрация
Восстановить пароль
 
Кот без сапог
0 / 0 / 0
Регистрация: 13.08.2013
Сообщений: 5
#1

Как собрать файлы в директории? - C++

07.02.2014, 17:55. Просмотров 400. Ответов 1
Метки нет (Все метки)

Привет всем!
Пользователем в программе задаётся директория (начальная папка). Требуется собрать все звуковые файлы (формат mp3, wav) как в самой исходной папке, так и во вложенных папках.
Вопрос: как это организовать?
Будет удобно, если ответ будет привязан к компонентам Builder C++.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2014, 17:55     Как собрать файлы в директории?
Посмотрите здесь:

Вывести в консоль все файлы и директории, какие есть в текущей директории - C++ WinAPI
вывести в консоль все файлы и директории какие есть в текущей директории. подскажите пожалуйста через какие функции это можно сделать?

Как выбрать файлы из текущей директории? - Visual C++
Как выбрать файлы из текущей директории? :) Ну...или как вот просто получить путь к директории текущей. Спасибо!

Как записать файлы из заданной директории в ListBox - Visual C++
Ребят, помогите пожалуйста, как в студии на плюсах записать файлы в listbox из жестко забитой директории? Заранее спасибо... Добавлено...

Как собрать файлы в кучу? - C++
В книге Страуструпа для начинающих, в 8 главе квест, на создание заголовочного файла, и два сpp файла тк вот В папке с...

Как создавать файлы в нужной мне директории, а потом работать с этими файлами? - C++ Builder
Хочу, чтобы программа создавала файлы в нужной мне директории, а потом работала с этими файлами: Например: В текущей директории (там...

Файлы в директории. - C++
Задача такова: Есть .exe программы. Лежит в папке. Нужна функция которая создаст массив или список имён файлов находящихся в данной...

Файлы и их создание в определенной директории - C++
Здравствуйте, форумчане, хотелось бы узнать кое-что по данному вопросу, а конкретнее задаче: Нужно создать при запуске определенную папку...

Перечислить файлы в директории по маске (Из С# в С++) - C++ Builder
Ребят, помогите сделать тоже самое, только на С++. Я не знаю, что и делать. using System; using System.Collections.Generic; ...

Eclipse и заголовочные файлы в отдельной директории - C++ Linux
Здравствуйте. Может не та ветка, но подумалось, что самая близкая. Итак. Имеем проект в Eclipse 4.3.1 (Arch Linux) упрощённо: ...

Отобразить на консоле все текстовые файлы поточной директории - C++ WinAPI
Здравствуйте, нужно вывести в консоль имена всех текстовых файлов в директории. Знаю ,что нужно использовать windows.h ,а также функции...

Собрать дамп файлы для dll - C++
Есть написанная dll. Ее подгружают разные процессы. Как включить для нее дампы, чтобы винда автоматически сохраняла их и я мог собрать .dmp...

Дописать во все файлы *.txt одной директории заданную строку - C++
Если заданная многострочная строка не присутствует в файле, нужно дописать её в конец файла. Для Windows. Не нужно кроссплатформы....


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.02.2014, 00:32     Как собрать файлы в директории? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Будет ли работать с Builder не знаю, но подобные задачи я решаю с помощью 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <iterator>
#include <string>
#include <algorithm>
#include <vector>
#include <windows.h>
#include <boost/filesystem.hpp>
 
namespace fs = boost::filesystem;
 
std::vector<fs::path> getFiles( const std::string& directoryName)
{
   std::vector<fs::path> res;
   for ( fs::directory_iterator it(directoryName), end; it != end; ++it)
   {
      try
      {
         if ( fs::is_regular_file(*it ) )
            res.push_back(*it);
         else if (fs::is_directory(*it) && !fs::is_symlink(*it) )
         {
            const std::vector<fs::path>& subDirectory = getFiles( it->path().generic_string() );
            std::copy(subDirectory.begin(), subDirectory.end(), std::back_inserter(res) );
         }
      }
      catch(const fs::filesystem_error& ex) {
      }
   }
   return res;
}
 
int main()
{
   SetConsoleCP (1251); SetConsoleOutputCP (1251);
 
   std::cout << "Enter directory: -> ";
   std::string dir;
   std::cin >> dir;
 
   std::vector<fs::path> files = getFiles(dir);
 
   files.erase(std::remove_if(files.begin(), files.end(), [](const fs::path p)
   {
      const std::string extension = p.extension().generic_string();
      return extension != ".mp3" && extension != ".wav";
   }), files.end());
 
   std::cout << "Your music files:\n\n";
   for (auto file : files) std::cout << file.filename().generic_string() << "\n";
 
   return 0;
}
Ответ Создать тему
Опции темы

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