2011-10-27 2 views
0

私はフォルダーを監視しています。ユーザーがファイルをフォルダーにコピーするときに、アクションを実行する必要があります。しかし、私がアクションを実行すると、ファイルにはまだ内容がありません。コピーしたファイルが準備完了であることを確認する方法はありますか?代わりに、if節のobjective-cコピーされたファイルが準備されているかどうかを確認します

([[[NSFileManager alloc] init] fileExistsAtPath:myPath] == true) 
{ do sth.; } 

あなたは、whileループを選択したい場合がありますが、私はあなたがそれに対処する方法を知っていると仮定;):

+0

ソースファイルへのパスはありますか?もしそうなら、 'stat'は両方のファイルを比較し、等価になるまでファイルサイズを比較します。 – darvids0n

+0

ソースを取得する方法がわからない限り、ソースはありません。私はkqueuesを使ってフォルダを監視しています。 – hmak

+0

さて、destフォルダを監視してソースファイル名を取得することはできません。別のオプションは、コピー操作を相手側から変更して、コピーが完了した後に '.tmp'ファイルを' touch 'し、それを 'rm'することです。あなたは '.tmp'ファイルを削除するための' kevent'を取得し、その段階で応答することができます。 – darvids0n

答えて

0

私はついにそれを手に入れました。 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]; 
0

NSFileManagerだからあなたのコードは次のようになります方法- (BOOL)fileExistsAtPath:(NSString *)path を得ました

希望すると助かります。

+0

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html – Faser

+0

私はこれを試しました。ファイルは存在しますが、コンテンツはまだありません。 – hmak

+0

ファイル属性を確認できますか?サイズがほぼゼロの場合、何もしないでください。あなたの行動を実行してください。 – Faser

関連する問題