Embarcadero C++ Builder, функция FileOpen, время открытия файла
|
|
Понедельник, 28 Декабря 2020 г. 14:30
+ в цитатник
Grigav: Написал программу, связанную с каталогизацией файлов на жестком диске. Файлы ищутся с помощью функций FindFirst и FindNext. Затем я открываю каждый найденный файл, читаю из него маленький фрагмент (1024 байта) и
аккуратно закрываю файл. Так вот, обнаружилось, что большинство файлов открываются нормально, но некоторые (замечено за некоторыми файлами EXE и PDF) открываются по нескольку секунд!
Фрагмент текста, которым это было установлено:
t1=GetTime(); //Опрашиваю "системные часы"
MyTmp=FileOpen(FN,fmOpenRead | fmShareDenyNone); //Открываю файл с именем FN для чтения (имя FN формируется в соответствии с FindNext)
t2=GetTime(); //Повторно опрашиваю системные часы
__int64 t3;
t3=MilliSecondsBetween(t2,t1); //Оцениваю время в миллисекундах, ушедшее на открытие файла
if (t3>10000) //Если это время превосходит 10 секунд
{
UnicodeString ZZ;
ZZ=t3;
Memo2->Lines->Add(ZZ+FN); //помещаю значение времени и имя файла в табличку-отчет
}
Сначала обеспокоило, что индикация смены файлов затормаживается; заподозрил зависание программы и стал обвешивать отладочными маячками. Потом выяснил, что программа не зависает, а именно затормаживается с последующим возобновлением. Сужая область действия маячков сумел локализовать единственную строчку - операцию FileOpen. Отмечу, что во время каталогизации проблемные файлы
не были открыты каким-то иным приложением.
Вопрос: может быть, при открытии файла следует устанавливать какие-то другие атрибуты? Сталкивался ли кто-нибудь еще с подобной проблемой?
https://forum.sources.ru/index.php?showtopic=421053&view=findpost&p=3843201
Метки:
C/C++:
Общие вопросы
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-