Как отслеживать каталог для файлов в C ++? - PullRequest
2 голосов
/ 24 марта 2010

Мне нужно отслеживать каталог, который содержит много файлов, и процесс читает и удаляет файлы .txt из каталога; как только все файлы .txt будут использованы, этот процесс должен быть уничтожен. Как проверить, все ли файлы .txt используются с использованием C ++? Я разрабатываю свое приложение на Visual Studio на платформе Windows.

Ответы [ 3 ]

5 голосов
/ 24 марта 2010

Чтобы получить обратные вызовы, когда содержимое каталога изменилось, используйте ReadDirectoryChangesW и FindFirstChangeNotification Win32 API.

Вы можете увидеть примеры из этого вопроса .

2 голосов
/ 24 марта 2010

Используйте FindFirstChangeNotification , чтобы зарегистрировать обратный вызов уведомления.

0 голосов
/ 26 марта 2010

Так как не требовалось выполнять действия при каждом удалении txt-файла. Я придумал следующий код:

{
  intptr_t hFile;
  struct _finddata_t c_file;
  string searchSpec;
  for (size_t i = 0; i < dataPathVec.size(); ++i)
  {
    searchSpec = dataPathVec.at(i) + DIRECTORY_SEPERATOR + "*" + TXT_FILE_EXT;
    hFile = 0;
    while((hFile != -1L) || (ret != 0))
    {
        hFile = _findfirst(searchSpec.c_str(), &c_file);
        Sleep(500);
        if (hFile != -1L)
        {
            ret = _findclose(hFile);
        }
    }
  }
}

Он может отслеживать множество папок и ждать, пока все текстовые файлы будут удалены из всех отслеживаемых папок.

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