2010-03-11 102 views
0

我有幾個大文件需要加載到應用程序文檔文件夾中,然後根據需要從那裏調出。如何將文件加載到Iphone文檔目錄中?

我見過的建議是把他們在資源文件夾,然後當應用程序加載它們複製到文件夾。我認爲,如果我這樣做,這些大文件都將在應用程序啓動起來,然後呆在那裏加載到內存...

是否存在具有某種方式將這些文件直接進入文件夾時,該應用程序是否被安裝,並且只有在被調用時才加載到內存中?

謝謝...

回答

0

沒有辦法在安裝時自動執行此操作。

您可以使用NSFileManager像複製文件。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *finalPath = [documentsDirectory stringByAppendingPathComponent:@"documentName"]; 
[[NSFileManager defaultManager] copyItemAtPath:yourDocumentPath toPath:finalPath error:nil]; 
+0

謝謝。我是否認爲資源目錄中的那些大文件會被加載到內存中並保留在那裏?將它們複製到文檔目錄後有沒有卸載它們的方法? – ilmar 2010-03-11 02:34:10

+0

強烈建議修改已安裝的應用程序包(即刪除文件)。不完全確定會有什麼影響,但蘋果說 - 不。 是什麼讓你不能直接使用這些文件?這不像用戶能夠分辨出差異。 – 2010-03-11 02:39:23

+0

我擔心內存命中從保持這些大文件有.. 還,應用程序將需要更長的時間來加載..通常它們只需要訪問大型文件的一次一個.. – ilmar 2010-03-11 02:41:36

0

取決於文件最初位於何處。如果在你的包中,那麼使用NSFileManager,就像gcamp說的那樣。如果您從'Net'下載它們,或者在運行中生成它們,請使用NSOutputStream - 這是用於將二進制或文本數據從內存寫入文件的API。或者使用POSIX open()/ write(),老派。

+0

我想完成的是在應用程序安裝時將這些文件加載​​到iPhone上,但只有在調用特定文件時才加載到內存中。任何方式來做到這一點? – ilmar 2010-03-11 02:44:34

+0

恩,當安裝應用程序時,您的套件中的所有資源文件也安裝在手機上。當應用程序由用戶運行時,資源不會自動加載到內存中 - 直到您的代碼以某種方式加載它們(使用loadNibFile,imageNamed或其他方法)。 – 2010-03-11 02:56:18

+0

好的..謝謝..這是我誤解了..我假設資源將全部加載一次.. – ilmar 2010-03-11 03:00:15

相關問題