2011-09-30 3 views
0

파일을 검색하고 있습니다. 검색 시간을 현재 시간 (파일 시간)에서 현재 시간 (파일 시간)까지 1 분 이내로 조정해야합니다. 어떻게하면 좋을까요? 이것은 내가 지금까지 가지고있는 것입니다. 고맙습니다.검색 시간 조정

struct file_data 
{ 
std::wstring sLastAccessTime; 
__int64 nFileSize; 
}; 

int GetFileList(const wchar_t *searchkey, std::map<std::wstring, file_data> &map) 
{ 
    WIN32_FIND_DATA fd; 
    HANDLE h = FindFirstFile(searchkey,&fd); 
    if(h == INVALID_HANDLE_VALUE) 
{ 
    return 0; // no files found 
} 
while(1) 
{ 
    wchar_t buf[128]; 
    FILETIME ft = fd.ftLastWriteTime; 
    SYSTEMTIME sysTime; 
    FileTimeToSystemTime(&ft, &sysTime); 
    wsprintf(buf, L"%d-%02d-%02d",sysTime.wYear, sysTime.wMonth, sysTime.wDay); 

    file_data filedata; 
    filedata.sLastAccessTime= buf; 
    filedata.nFileSize  = (((__int64)fd.nFileSizeHigh) << 32) + fd.nFileSizeLow; 

    map[fd.cFileName]= filedata; 

    if (FindNextFile(h, &fd) == FALSE) 
     break; 
} 
return map.size(); 
} 

int main() 
{ 
std::map<std::wstring, file_data> map; 
GetFileList(L"C:\\Users\\DS\\Downloads\\*.jpg", map); 
GetFileList(L"C:\\Users\\DS\\Downloads\\*.txt", map); 
int count = GetFileList(L"C:\\Users\\DS\\Downloads\\*.pdf", map); 

for(std::map<std::wstring, file_data>::const_iterator it = map.begin(); 
    it != map.end(); ++it) 
{ 
+0

1 분 미만의 파일을 가져오고 싶습니다. 고맙습니다. –

+0

꽤 불분명 함. SystemTimeToFileTime을 사용하고 60 * 1000 * 10000LL을 뺍니다. 1 분 전의 FILETIME입니다. –

+0

지금 나는 모든 pdf, txt 및 jpg fileds를 디렉토리에서 가져오고 있습니다. 그러나 나는 단지 1 분 또는 그 이하의 것들만 원한다. 또는 우리는 1 분 또는 그 이하의 젊은 말을해야합니까! –

답변

2

사용 GetSystemTimeAsFileTimeFILETIME 형식으로 현재 시간을 얻을 수 있습니다. 1 분 후에 돌아가려면 6000000000을 뺍니다. CompareFileTime을 사용하여 각 파일의 시간을 해당 값과 비교하십시오.

+0

좋은 소리! 나는 이것에 조금 새로운 것이다. 당신이 예제를 가지고 있으며, 코드에서 어디로 갈 것입니까? 고마워요, 레이몬드 –

+1

뾰족한 부분이 당신에게 좀 더 많은 문서를 읽을 수 있기를 희망했습니다. 'FILETIME ftNow; GetSystemTimeAsFileTime (& ftNow); 자동 ftAs64 = ftOneMinuteAgo.dwLowDateTime + ((부호없는 __int64) ftOneMinuteAgo.dwHighDateTime << 32) - 6000000000UL; FILETIME ftOneMinuteAgo = {(DWORD) ftAs64, (DWORD) (ftAs64 >> 32)};'처음 두 문장의 해결책입니다. 세 번째 문제를 해결하도록하겠습니다. –

+0

레이몬드 감사합니다. 너의 뾰족한 움직임이 효과가 있었다. 나는 수색하고 읽었다. 나는 그 의견을 고맙게 생각한다. 나는 VB 프로그래머이고 방금 C++을 배우기 시작했고, 내가 사용하는 것과는 아주 다르다! 나는 나머지를 계산하려고 노력할 것이다. ... –