В моем текущем проекте у нас было требование проверить, копируется ли файл.
Мы уже разработали библиотеку, которая будет давать нам уведомления ОС, такие как file_added, file_removed, file_modified, file_renamed в определенной папке вместе с соответствующим путем к файлу.
Проблема здесь в том, что, скажем, если вы добавляете файл размером 1 ГБ, он дает несколько уведомлений, таких как file_added, file_modified, file_modified, когда файл копируется.
Теперь я решил превзойти эти уведомления, проверяя, копирует ли файл или нет. Исходя из этого, я буду игнорировать события.
Я написал ниже код, который говорит, если файл копируется или нет, который принимает путь к файлу в качестве входного параметра.
Подробности: — В Mac, когда файл копируется, дата создания устанавливается как некоторая дата, меньшая, чем 1970. После того, как он скопирован, дата устанавливается на текущую дату. Использую эту технику. На основании этого я решаю, что файл копируется.
Проблема: — когда мы копируем файл в терминале, он выходит из строя. Пожалуйста, посоветуйте мне любой подход.
bool isBeingCopied(const boost::filesystem::path &filePath)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
bool isBeingCopied = false;
if([[[[NSFileManager defaultManager] attributesOfItemAtPath:[NSString stringWithUTF8String:filePath.string().c_str()] error:nil] fileCreationDate] timeIntervalSince1970] < 0)
{
isBeingCopied = true;
}
[pool release];
return isBeingCopied;
}
Задача ещё не решена.
Других решений пока нет …