2010-03-11 3 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

+0

Модификация установленного пакета приложений (то есть удаление файлов) в значительной степени рекомендуется. Не совсем точно, какими будут последствия, но Apple говорит - не надо. Что мешает вам использовать эти файлы прямо из комплекта? Это не похоже на то, что пользователь сможет сказать разницу. –

+0

Я беспокоюсь о том, что в памяти хранятся эти большие файлы .. также потребуется больше времени для загрузки. Обычно им нужно будет получать доступ только к одному из больших файлов за один раз. – ilmar

0

В зависимости от того, где файлы первоначально находятся. Если в вашем пакете, используйте NSFileManager, как сказал gcamp. Если вы загружаете их из «Сети» или генерируете их «на лету», используйте NSOutputStream - это API для записи двоичных или текстовых данных из памяти в файлы. Или используйте POSIX open()/write(), старую школу.

+0

Что я хотел бы сделать, это загрузить эти файлы на iphone, когда приложение будет установлено, но загружено в память только тогда, когда вызывается конкретный файл. Любой способ сделать это? – ilmar

+0

Ум, когда приложение установлено, все файлы ресурсов в вашем комплекте также установлены на телефоне. Когда приложение запускается пользователем, ресурсы автоматически не загружаются в память - пока ваш код не загрузит их каким-либо образом (используя loadNibFile, imageNamed или какой-либо другой метод). –

+0

ОК .. спасибо .. это было то, что я неправильно понял .. Я предположил, что все ресурсы будут загружены сразу. – ilmar

Смежные вопросы