Tekrar tekrar bir dizinde taramak için destekleyici "recursive_directory_iterator" desteğini kullanıyorum. Ancak, yineleyici uygulamanızın erişiminin olmadığı bir dizine girdiğinde, "boost :: filesystem3 :: filesystem_error" türü dışında, yineleyiciyi ve programı iptal eden durdurulur. Yinede, yineleyiciye bu dizinleri atlamasını emredebilirim.recursive_directory_iterator istisnayı atar
Traversing a directory with boost::filesystem without throwing exceptions'de önerilen kodu denedim, ancak ne iş yaptı ne de işe yaradı. Boost versiyon 1.49 kullanıyorum.
void scand()
{
boost::system::error_code ec, no_err;
// Read dir contents recurs
for (recursive_directory_iterator end, _path("/tmp", ec);
_path != end; _path.increment(ec)) {
if (ec != no_err) {
_path.pop();
continue;
}
cout << _path->path() << endl;
}
}
, Ahmed teşekkür ederiz:
Kodum öneri aşağıdaki gibi (Ben ile gelebilir en iyi), bakar izledikten sonra.
Ben for döngüsünün artım parçasını güncellenen ve şimdi farklı bir hata alıyorum: ***** İç Programı Hata - iddiasını (m_level> 0) void boost :: filesystem3 başarısız :: detay :: recur_dir_itr_imp :: açılır(): /usr/include/boost/filesystem/v3/operations.hpp(818) seviyesi ile recursive_directory_iterato r pop() <1 durdurulan –
Görünüşe göre bu bilinen (henüz tespit edilecek) bug: https://svn.boost.org/trac/boost/ticket/4494 –
Aynı sorunu yaşıyorum. Nisan 2015'te hala sabit değil misiniz? –