我正在研究一個涉及一些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