20 초 미만의 파일을 찾는 코드가 있습니다. 그것들을 찾는 중이지만 삭제할 수는 없습니다. remove()를 사용하고 있습니다. 나는 와일드 카드를 사용하여 제거를 시도했지만 운은 없다. 그것은 문법이 있어야합니다. 어떤 도움을 주셔서 감사합니다. 고맙습니다.파일이 삭제되지 않음
using namespace std;
typedef vector<WIN32_FIND_DATA> tFoundFilesVector;
std::wstring LastWriteTime;
int getFileList(const char * filespec, tFoundFilesVector &foundFiles)
{
WIN32_FIND_DATA findData;
HANDLE h;
int validResult=true;
int numFoundFiles = 0;
h = FindFirstFile((LPCSTR)filespec, &findData);
if (h == INVALID_HANDLE_VALUE)
return 0;
while (validResult)
{
numFoundFiles++;
foundFiles.push_back(findData);
validResult = FindNextFile(h, &findData);
}
return numFoundFiles;
}
void showFileAge(tFoundFilesVector &fileList)
{
unsigned _int64 fileTime, curTime, age;
tFoundFilesVector::iterator iter;
FILETIME ftNow;
CoFileTimeNow(&ftNow);
curTime = ((_int64) ftNow.dwHighDateTime << 32) + ftNow.dwLowDateTime;
for (iter=fileList.begin(); iter<fileList.end(); iter++)
{
fileTime = ((_int64)iter->ftLastWriteTime.dwHighDateTime << 32) + iter- >ftLastWriteTime.dwLowDateTime;
age = curTime - fileTime;
if (age <= (_int64)200000000UL)
{
wcout << " Delete: '" <<endl;
wcout << "FILE: '" << iter->cFileName << "', AGE: " << (_int64)age/10000000UL << " seconds" << endl;
remove("C:\\mapper\\iter->cFileName");
}
else
{
//wcout << " Quit: '" <<endl;
//return;
}
}
}
int main()
{
string fileSpec = "*.*";
tFoundFilesVector foundFiles;
tFoundFilesVector::iterator iter;
int foundCount = 0;
getFileList("c:\\Mapper\\*.txt", foundFiles);
getFileList("c:\\Mapper\\*.jpg", foundFiles);
foundCount = foundFiles.size();
if (foundCount)
{
wcout << "Found "<<foundCount<<" matching files.\n";
showFileAge(foundFiles);
}
system("pause");
return 0;
}
'remove ("C : \\ mapper \\ iter-> cFileName");로 무엇을 달성하려고합니까? 그건 가능하지 않을 수 있습니다. 대신에 두 개의 문자열에서 파일의 경로를 만들어야합니다. –
고맙습니다. 어떻게해야합니까? 나는 아직도 아주 새롭다! –
프레디 닉 하미디 (Frédéric Hamidi)가 정확합니다. C++에는 주로 동적/스크립팅 언어에서 발견되는 "문자열 보간법"이 없습니다. –