이것은 가능한 접합점입니다. 이제 test.exe "C:\WORK"
이것을 실행
#include <boost/range/iterator_range.hpp>
#include <boost/filesystem.hpp>
#include <vector>
#include <string>
#include <iostream>
int main(int argc, char* argv[])
{
using namespace boost::filesystem;
std::vector<std::string> args(argv+1, argv+argc);
if (args.empty()) args.push_back("C:\\WORK");
for (auto dir : args)
{
recursive_directory_iterator f(dir), l;
for (directory_entry& entry : boost::make_iterator_range(f,l))
{
if (is_other(entry))
{
assert(!is_regular_file(entry));
assert(!is_directory(entry));
std::cout << entry << "\n";
}
}
}
}
이
인쇄
:
난 그냥 연결 지점을 만들기 위해 (시스 인 터널에서) junction.exe
를 사용하여, 그들을 찾아 낼이 작은 테스트 프로그램을 사용하여 Windows 상자에 그것을 시도
"C:\WORK\MyJunction"
assers
은 은 일반 파일이 아니고 디렉토리가 아닙니다. 이 비교적 간단 도우미
int main(int argc, char* argv[])
{
using namespace boost::adaptors;
std::vector<std::string> const args(argv+1, argv+argc);
for (auto& dir : args)
for (auto& entry : traverse_directory(dir) | filtered(is_valid_file))
std::cout << entry << "\n";
}
사용 : 약간 관련이없는 뉴스에서
, 이것은 디렉토리 반복 오히려 달콤한 참조
template <typename T>
boost::iterator_range<boost::filesystem::recursive_directory_iterator> traverse_directory(T const& dir) {
boost::filesystem::recursive_directory_iterator f(dir), l;
return boost::make_iterator_range(f, l);
}
static bool is_valid_file(boost::filesystem::directory_entry const& entry) {
return is_regular_file(entry) && !is_other(entry);
}
그것을 Live on Coliru
때로 믿을 수 ' 그 것들을 상징적 인 링크로 보지 않으시겠습니까? –
그들은 사용자 이름/그림 등의 링크 일 수 있습니다. 파일 시스템이 실제로 그것이 무엇이라고 생각 하는지를 알 수있는 경로뿐만 아니라 타입을 출력 할 수있다. – 111111
파일 형식을 늘리려고 시도합니다. 파일 시스템이 그렇다고 생각합니다. 어쨌든 이러한 폴더를 피하기 위해 수행 한 작업은이 폴더에 크기 속성이 없으므로 파일 크기를 묻는 시도입니다 – user3009804