在我目前的项目中,我们要求检查文件是否仍在复制。
我们已经开发了一个库,它会在特定文件夹上提供操作系统通知,例如file_added,file_removed,file_modified,file_renamed以及相应的文件路径。
这里的问题是,假设您添加1 GB文件,它会在复制文件时提供多个通知,例如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;
}