1

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

我们已经开发了一个库,它将在特定文件夹以及相应的文件路径上向我们提供诸如 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;
}
4

0 回答 0