Файл не удаляется - PullRequest
       3

Файл не удаляется

0 голосов
/ 04 октября 2011

У меня есть код, который находит файлы менее 20 секунд.Он находит их, но я не могу их удалить.Я использую удалить ().Я пытался использовать удалить с подстановочными знаками, но не повезло.Это должно быть что-то с синтаксисом.Любая помощь приветствуется.Спасибо.

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; 
}

1 Ответ

2 голосов
/ 04 октября 2011

Вам нужно объединить строки "C: \ mapper \" с тем, что находится в iter-> cFileName. Самый простой способ сделать это - использовать класс std :: string. Результат будет выглядеть примерно так:

remove(string("c:\\mapper\\").append(string(iter->cFileName)).c_str());

Это предполагает, что вы не используете Unicode-кодирование ваших строк, в противном случае вам нужно использовать std :: wstring. Для использования этих классов вам также необходимо включить

#include <string>

в верхней части вашего файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...