我有几个大文件需要加载到应用程序文档文件夹中,然后根据需要从那里调出。如何将文件加载到Iphone文档目录中?
我见过的建议是把他们在资源文件夹,然后当应用程序加载它们复制到文件夹。我认为,如果我这样做,这些大文件都将在应用程序启动起来,然后呆在那里加载到内存...
是否存在具有某种方式将这些文件直接进入文件夹时,该应用程序是否被安装,并且只有在被调用时才加载到内存中?
谢谢...
我有几个大文件需要加载到应用程序文档文件夹中,然后根据需要从那里调出。如何将文件加载到Iphone文档目录中?
我见过的建议是把他们在资源文件夹,然后当应用程序加载它们复制到文件夹。我认为,如果我这样做,这些大文件都将在应用程序启动起来,然后呆在那里加载到内存...
是否存在具有某种方式将这些文件直接进入文件夹时,该应用程序是否被安装,并且只有在被调用时才加载到内存中?
谢谢...
没有办法在安装时自动执行此操作。
您可以使用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];
取决于文件最初位于何处。如果在你的包中,那么使用NSFileManager,就像gcamp说的那样。如果您从'Net'下载它们,或者在运行中生成它们,请使用NSOutputStream - 这是用于将二进制或文本数据从内存写入文件的API。或者使用POSIX open()/ write(),老派。
谢谢。我是否认为资源目录中的那些大文件会被加载到内存中并保留在那里?将它们复制到文档目录后有没有卸载它们的方法? – ilmar 2010-03-11 02:34:10
强烈建议修改已安装的应用程序包(即删除文件)。不完全确定会有什么影响,但苹果说 - 不。 是什么让你不能直接使用这些文件?这不像用户能够分辨出差异。 – 2010-03-11 02:39:23
我担心内存命中从保持这些大文件有.. 还,应用程序将需要更长的时间来加载..通常它们只需要访问大型文件的一次一个.. – ilmar 2010-03-11 02:41:36