Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6305
Последний выпуск: 19.06.2015

Как узнать что файл скопировалса до конца???

73K
13 сентября 2011 года
mahara
4 / / 30.08.2011
ПОМОГИТЕ, как узнать что файл скопировалса до конца, с помощю ReadDirectoryChangesW нужен пример...
20K
13 сентября 2011 года
Finder
37 / / 06.05.2007
А проверить размер нового файла если не уверены что копирование получилось не подходит?
278
13 сентября 2011 года
Alexander92
1.1K / / 04.08.2008
Что значит "до конца"? Сравните контрольные суммы, стандартная методика проверки целостности файла.
14
13 сентября 2011 года
Phodopus
3.3K / / 19.06.2008
Файл до конца может никогда и не скопироваться, возможен и такой вариант.
73K
15 сентября 2011 года
mahara
4 / / 30.08.2011
Я проверяю папку на появление новых файлов, если файл создалса начинаю его обрабатывать, но файл начинает обрабатываться еще не скопировавшысь до конца, о входном файле ничего не знаю кроме его формата. Использую ф-ию ReadDirectoryChangesW.
278
15 сентября 2011 года
Alexander92
1.1K / / 04.08.2008
Ну ReadDirectoryChangesW умеет, например, еще и размер проверять. Начинайте обработку, если пришло уведомление о том, что файл с нужным вам именем достиг размера исходного файла.
73K
15 сентября 2011 года
mahara
4 / / 30.08.2011
Цитата: Alexander92
Ну ReadDirectoryChangesW умеет, например, еще и размер проверять. Начинайте обработку, если пришло уведомление о том, что файл с нужным вам именем достиг размера исходного файла.


а можно пример пожалуйста???

278
15 сентября 2011 года
Alexander92
1.1K / / 04.08.2008
Код:
HANDLE hDir = CreateFile(_T("path\\to\\your_directory"), FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, ... /* тут все, как обычно */);
FILE_NOTIFY_INFORMATION pBuffers[1024] = {0};
DWORD dwBytesReturned = 0;

BOOL bStop = FALSE;
while (ReadDirectoryChangesW(hDir, pBuffers, FALSE, FILE_NOTIFY_CHANGE_SIZE, &dwBytesReturned, NULL, NULL)) {
   FILE_NOTIFY_INFORMATION *pBuffer = pBuffers;
   while (pBuffer) {
      if (wcsncmp(pBuffer->FileName, your_file_name, pBuffer->FileNameLength) == 0) {
         if (get_file_size_you_must_write_this_function_yourself(your_file_name) == desired_file_size) {
            start_processing_your_file();
            bStop = TRUE;
         }
      }
      pBuffer += NextEntryOffset;
   }
   ZeroMemory(pBuffers, sizeof(pBuffers));
   if (bStop) break;
}
CloseHandle(hDir);


Примерно так.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог