폴더의 파일 목록이 필요하며 파일이 수정 된 날짜 시간으로 정렬됩니다.파일이 수정 된 날짜 시간으로 정렬 된 폴더의 파일 목록을 얻는 방법
Linux에서 C++로 작업 중이므로 Boost 라이브러리가 지원됩니다.
아무에게도 이것을 구현하는 방법에 대한 코드 샘플을 제공해 주시겠습니까?
폴더의 파일 목록이 필요하며 파일이 수정 된 날짜 시간으로 정렬됩니다.파일이 수정 된 날짜 시간으로 정렬 된 폴더의 파일 목록을 얻는 방법
Linux에서 C++로 작업 중이므로 Boost 라이브러리가 지원됩니다.
아무에게도 이것을 구현하는 방법에 대한 코드 샘플을 제공해 주시겠습니까?
대부분의 운영 체제는 특정 순서로 디렉토리 항목을 반환하지 않습니다. 그들을 분류하고 싶다면 (아마도 인간 사용자에게 결과를 보여 주어야 할 것입니다), 별도의 단계에서이를 수행해야합니다. 당신이 할 수있는 한 가지 방법은 지금처럼 std::multimap
에 뭔가를 항목을 삽입하는 것입니다 : 당신은 다음 result_set
을 반복 할 수 있으며, 매핑 된 boost::filesystem::path
항목이 오름차순으로 될 것입니다
namespace fs = boost::filesystem;
fs::path someDir("/path/to/somewhere");
fs::directory_iterator end_iter;
typedef std::multimap<std::time_t, fs::path> result_set_t;
result_set_t result_set;
if (fs::exists(someDir) && fs::is_directory(someDir))
{
for(fs::directory_iterator dir_iter(someDir) ; dir_iter != end_iter ; ++dir_iter)
{
if (fs::is_regular_file(dir_iter->status()))
{
result_set.insert(result_set_t::value_type(fs::last_write_time(dir_iter->path()), *dir_iter));
}
}
}
.
파일이 동일한 초 내에 생성/수정되는 경우'std :: time_t '가 두 번째 파일만큼 정확하다는 점에서 그 순서가 보장되지 않는다는 점을 기억하십시오. – fduff
http://www.boost.org/doc/libs/1_46_1/libs/filesystem/v3/doc/reference.html#last_write_time에 유의하십시오. last_write_time은 경로가 상태가 아닙니다. fs :: last_write_time (dir_iter-> path()) – e271p314
result_set.insert에 왼쪽 괄호가 누락되었습니다. – daramarak
다른 질문과 어떻게 다른가요? http://stackoverflow.com/questions/4279164/cboost-file-system-to-return-a-list-of-files-older-than-a-specific- 시각? Nabulke는 올바른 방향으로 당신을 알려줄 답을 제공했습니다. 거기에서 파일을 벡터에 추가하고 정렬하기가 너무 어렵지 않습니다. – Ralf
가능한 복제본 [C++ : 특정 시간보다 오래된 파일 목록을 반환하는 파일 시스템 향상] (https://stackoverflow.com/questions/4279164/cboost-file-system-to-return-a-list-of) -files-specific-than-specific-time-than-specific-time) – halfer