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

相关问题