47 lines
1.0 KiB
C++
47 lines
1.0 KiB
C++
|
#include <iostream>
|
||
|
#include <boost/filesystem/path.hpp>
|
||
|
#include <boost/filesystem/operations.hpp>
|
||
|
|
||
|
|
||
|
using namespace std;
|
||
|
using namespace boost;
|
||
|
using namespace boost::filesystem;
|
||
|
|
||
|
|
||
|
static void Process_Files( const path &Path, bool recurse )
|
||
|
{
|
||
|
cout << "Processing folder " << Path.native_file_string() << "\n";
|
||
|
|
||
|
directory_iterator end_itr; // default construction yields past-the-end
|
||
|
|
||
|
for(
|
||
|
directory_iterator itr( Path );
|
||
|
itr != end_itr;
|
||
|
++itr
|
||
|
)
|
||
|
{
|
||
|
if( recurse && is_directory( *itr ) )
|
||
|
{
|
||
|
// Погружаемся на 1 уровень вниз по дереву каталогов
|
||
|
path Deeper( *itr );
|
||
|
|
||
|
Process_Files( Deeper,recurse );
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
|
||
|
// Файл, путь к которому содержится в filename, можно обрабатывать.
|
||
|
string filename = itr->native_file_string();
|
||
|
cout << filename << "\n";
|
||
|
}
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
int main( int argc, char* argv[] )
|
||
|
{
|
||
|
bool recurse=true; // обходить ли каталоги
|
||
|
Process_Files( current_path(), recurse );
|
||
|
return 0;
|
||
|
}
|