MAC:如何检查文件是否仍在c ++中复制?

时间:2012-10-06 09:36:05

标签: c++ macos filesystems finder

在我目前的项目中,我们要求检查文件是否仍在复制。

我们已经开发了一个库,它会在特定文件夹上提供操作系统通知,例如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;
}

0 个答案:

没有答案