G
Guest
Вот такой рекурсивной функцией пытаюсь найти в нужной папке на сетевом диске или ее подпапках файл.
Все работает нормально, до тех пор, пока не натыкаюсь на папку, к которой доступ запрещен. Ну и не буду я в ней искать, мне нужно ее перескочить. Подскажите, как сделать?
платформа VS2005, проект ObjectARX2007
Все работает нормально, до тех пор, пока не натыкаюсь на папку, к которой доступ запрещен. Ну и не буду я в ней искать, мне нужно ее перескочить. Подскажите, как сделать?
Код:
bool FindFile( const boost::filesystem::path & dir_path, // в этом каталоге,
CString file_name, // искать такое имя,
boost::filesystem::path & path_found ) // разместить путь здесь если удалось найти
{
CString sFileName;
if ( !boost::filesystem::exists( dir_path ) ) return false; ////[b]Эта проверка в debuge выполняется[/b]
boost::filesystem::directory_iterator end_itr;
boost::filesystem::directory_iterator itr(dir_path); /////[b]exception здесь[/b]
for (;itr != end_itr;++itr )
{
if (boost::filesystem::is_other(itr->status()))continue;
wchar_t * pwsz;
acutNewString(pwsz,1000);////Что начинается с acut - функции выделения памяти под строки
mbstowcs(pwsz, itr->leaf().c_str(), 1000);
sFileName.Append(pwsz);
acutPrintf(_T("\n%s"),pwsz);
acutDelString(pwsz);
if ( boost::filesystem::is_directory( *itr ) )
{
if (FindFile( *itr, file_name, path_found ) ) return true;
}
else if ( 0==sFileName.Compare(file_name) )
{
path_found = *itr;
return true;
}
}
return false;
}
платформа VS2005, проект ObjectARX2007