我正在研究一个涉及一些SFTP功能的小型免费Cocoa应用程序,专门用于上传。该应用程序即将完成,但我已经遇到了上传包含大量文件的文件夹方面的一个相当不好的问题。处理非常大的SFTP上传 - Cocoa
我使用ConnectionKit处理上传:
CKTransferRecord * record;
record = [connection recursivelyUpload:@"/Users/me/large-folder"
to:@"/remote/directory"];
这工作适合大多数文件和文件夹。尽管在这种情况下@“/ Users/me/large-folder”里面有300多个文件。调用这种方法使我的CPU高达100%达30秒左右,并且我的应用程序没有响应(mac旋转球)。在30秒后,我的上传排队并正常工作,但这并不理想。显然无论枚举这些文件是否导致我的应用程序锁定,直到完成。
不知道该怎么办。我接受任何解决方案 - 即使使用不同的框架,尽管我已经完成了我的研究,并且ConnectionKit似乎是最好的解决方案。
任何想法?
将枚举移动到它自己的线程上,阻止了程序锁定,但是我仍然在100%的CPU期间运行。你能解释一下“懒惰地”阅读文件的意思吗? – nrj 2009-08-11 15:32:03
这意味着尽可能晚地阅读文件。在这种情况下,它意味着在您准备上传文件之前不会读取文件。我怀疑他们在枚举期间正在读取所有文件,这可能不是一个好时机。如果有必要,NSFileHandle有例程在后台读取并在完成读取时通知您。 – 2009-08-11 23:43:06