Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标c检查复制的文件是否准备就绪_Objective C - Fatal编程技术网

Objective c 目标c检查复制的文件是否准备就绪

Objective c 目标c检查复制的文件是否准备就绪,objective-c,Objective C,我正在监视一个文件夹,当用户将文件复制到该文件夹时,我需要执行一个操作。但是,当我执行操作时,文件还没有内容。有没有办法检查复制的文件是否已准备就绪?NSFileManager获得了一个方法-(BOOL)fileExistsAtPath:(NSString*)path 因此,您的代码如下所示: ([[[NSFileManager alloc] init] fileExistsAtPath:myPath] == true) { do sth.; } 您可能希望选择while循环,而不是if子句

我正在监视一个文件夹,当用户将文件复制到该文件夹时,我需要执行一个操作。但是,当我执行操作时,文件还没有内容。有没有办法检查复制的文件是否已准备就绪?

NSFileManager
获得了一个方法
-(BOOL)fileExistsAtPath:(NSString*)path
因此,您的代码如下所示:

([[[NSFileManager alloc] init] fileExistsAtPath:myPath] == true)
{ do sth.; }
您可能希望选择while循环,而不是if子句,但我想您知道如何处理它;)


希望我能帮忙。

我终于拿到了。我可以使用NSPasteboard检查当前正在复制的文件。 有了这些信息,我可以比较源和目标之间的文件大小,以了解复制何时完成

NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
NSArray *classes = [[NSArray alloc] initWithObjects:[NSURL class], nil];
NSDictionary *options = [NSDictionary dictionaryWithObject: [NSNumber numberWithBool:YES] forKey:NSPasteboardURLReadingFileURLsOnlyKey];
NSArray *copiedItems = [pasteboard readObjectsForClasses:classes options:options];

我试过了,文件确实存在,但内容还没有。也许你可以检查文件属性。如果大小几乎等于零,不要做任何事情,如果不是,请执行您的操作当用户复制一个非常大的文件时,它不够可靠100MB+您有到源文件的路径吗?如果是这样,
stat
两个文件并比较文件大小,直到它们相等。我没有源代码,除非你知道获取源代码的方法。我正在使用kqueues监视文件夹。不,您将无法通过监视dest文件夹来获取源文件名。另一个选项是,如果您可以从另一端更改复制操作,请使其
触摸
一个
.tmp
文件,并在复制完成后触摸
rm
。您将获得一个用于删除
.tmp
文件的
kevent
,您可以在该阶段做出响应。我无法控制复制操作