std::string get_directory_listing( boost::string_view folder ) { namespace fs = boost::filesystem; fs::path p { folder.to_string( ) }; std::ostringstream ss; try { if( exists( p ) ) { if( fs::is_regular_file( p ) ) { ss <<p <<" size is " <<fs::file_size( p ) <<"\r\n"; } else if( fs::is_directory( p ) ) { ss <<p <<" is a directory containing:\n"; std::copy( fs::directory_iterator( p ), fs::directory_iterator( ), std::ostream_iterator<fs::directory_entry>( ss, "\r\n" ) ); } else { ss <<p <<" exists, but is neither a regular file nor a directory\n"; } } else { ss <<p <<" does not exist\n"; } } catch( const fs::filesystem_error& ex ) { ss <<"ERROR: " <<ex.what( ) <<'\n'; } return ss.str( ); }