주어진 디렉토리에서 최종 수정/생성 된 파일을 어떻게 선택할 수 있는지 알고 싶습니다.디렉토리에서 마지막으로 수정 한 파일을 선택하십시오.
현재 XML이라는 디렉토리가 있는데 그 안에는 많은 XML 파일이 있습니다. 하지만 마지막으로 수정 한 파일 만 선택하고 싶습니다.
주어진 디렉토리에서 최종 수정/생성 된 파일을 어떻게 선택할 수 있는지 알고 싶습니다.디렉토리에서 마지막으로 수정 한 파일을 선택하십시오.
현재 XML이라는 디렉토리가 있는데 그 안에는 많은 XML 파일이 있습니다. 하지만 마지막으로 수정 한 파일 만 선택하고 싶습니다.
다음 함수를 사용하여 폴더 내의 모든 항목을 나열합니다. 모든 파일을 문자열 벡터에 씁니다 만, 변경할 수 있습니다.
bool ListContents (vector<string>& dest, string dir, string filter, bool recursively)
{
WIN32_FIND_DATAA ffd;
HANDLE hFind = INVALID_HANDLE_VALUE;
DWORD dwError = 0;
// Prepare string
if (dir.back() != '\\') dir += "\\";
// Safety check
if (dir.length() >= MAX_PATH) {
Error("Cannot open folder %s: path too long", dir.c_str());
return false;
}
// First entry in directory
hFind = FindFirstFileA((dir + filter).c_str(), &ffd);
if (hFind == INVALID_HANDLE_VALUE) {
Error("Cannot open folder in folder %s: error accessing first entry.", dir.c_str());
return false;
}
// List files in directory
do {
// Ignore . and .. folders, they cause stack overflow
if (strcmp(ffd.cFileName, ".") == 0) continue;
if (strcmp(ffd.cFileName, "..") == 0) continue;
// Is directory?
if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
// Go inside recursively
if (recursively)
ListContents(dest, dir + ffd.cFileName, filter, recursively, content_type);
}
// Add file to our list
else dest.push_back(dir + ffd.cFileName);
} while (FindNextFileA(hFind, &ffd));
// Get last error
dwError = GetLastError();
if (dwError != ERROR_NO_MORE_FILES) {
Error("Error reading file list in folder %s.", dir.c_str());
return false;
}
return true;
}
은 무엇 당신이해야 할 것은 최신 파일을 찾을 수에 적응이다
(WINDOWS.H를 포함하는 것을 잊지 마세요). ffd 구조체 (WIN32_FIND_DATAA 데이터 형식)에는 ftCreationTime, ftLastAccessTime 및 ftLastWriteTime이 포함되어 있으므로 최신 파일을 찾을 수 있습니다. 이 멤버는 FILETIME 구조이며 여기에서 설명서를 찾을 수 있습니다. http://msdn.microsoft.com/en-us/library/windows/desktop/ms724284%28v=vs.85%29.aspx
FindFirstFile과 FindNextFile을 사용할 수 있습니다. 크기와 수정 시간과 같은 파일을 설명하는 구조체를 제공합니다.
Windows 전용 솔루션이라는 것을 추가 할 수 있습니다. – pmr
부스트. 파일 시스템은 last_write_time을 제공합니다. 이 파일을 사용하여 directory
에있는 파일을 정렬 할 수 있습니다. Boost.Filesystem
및 (부스트) 일반적으로 C + +에 대한 약간의 협박 수 있습니다 - 새로운 코너 당신이 먼저 귀하의 운영 체제에 대한 솔루션을 확인하는 것이 좋습니다.
아직 시도한 것은 무엇입니까? 이 문제에 대해 어떻게 생각하십니까? 질문을 수정하십시오. – ScarletAmaranth
어떤 OS입니까? 이식 가능한 코드가 필요합니까? –
나는 윈도우 플랫폼에서 일하고있다 .. –