在我当前的项目中,我们需要检查文件是否仍在复制。
我们已经开发了一个库,它将在特定文件夹以及相应的文件路径上向我们提供诸如 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;
}