Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS应用程序上保存大文件_Ios_File_File Io_Save - Fatal编程技术网

在iOS应用程序上保存大文件

在iOS应用程序上保存大文件,ios,file,file-io,save,Ios,File,File Io,Save,我想知道为iOS应用程序存储大文件的最佳方式(苹果指南或常识建议的方式)是什么 例如,对于big,我指的是保存一个游戏(比如说500kb),因此考虑plists是不可行的 我应该使用普通的Cocoa文件管理API保存它吗?标准的stdio(fopen,fwrite,随便什么)有很多选择,当然最好的选择取决于您的需求。如果您愿意,当然可以使用C标准I/O。如果您将所有游戏数据放在一个大缓冲区中,那么NSData的读/写文件方法很容易使用。如果您有一组实现NSCoding的对象,那么可以使用NSKe

我想知道为iOS应用程序存储大文件的最佳方式(苹果指南或常识建议的方式)是什么

例如,对于big,我指的是保存一个游戏(比如说500kb),因此考虑plists是不可行的


我应该使用普通的Cocoa文件管理API保存它吗?标准的
stdio
fopen
fwrite
,随便什么)有很多选择,当然最好的选择取决于您的需求。如果您愿意,当然可以使用C标准I/O。如果您将所有游戏数据放在一个大缓冲区中,那么NSData的读/写文件方法很容易使用。如果您有一组实现NSCoding的对象,那么可以使用NSKeyedArchiver/Unarchiver

以下是使用NSFileManager查找应用程序文档目录的一种方法:

NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent: @"Documents"];

您的首要任务应该是总体用户体验,包括:

  • 保持应用程序的响应性:仅保存更改的内容。如果您不必同时保存500 K,但只需更改一小部分,您可能需要考虑SQLite或多个较小的文件。
  • 适度使用设备资源:如果你的应用程序占用了不成比例的可用存储空间,用户更有可能删除它
  • 使用最适合上述1和2方法的API。如果特定的API不能改善用户体验,那么就没有必要对其进行额外的开发

  • 根据我的经验,大文件操作往往相对较慢,但cpu相对较快,因此如果要保存大量文本,使用zlib对其进行压缩以进行保存效果很好(文本压缩率很高,而zlib相当快)。

    看起来已经有了一个API,可以编写您想要保存的任何文件。我不确定是否有限制;至少我没有发现任何东西。我可以用标准i/O轻松管理一切,我主要担心的是文件存储在哪里,可能有限制或其他什么?我真的不知道应用程序实际上是如何由iOS(其工作目录或“数据”目录或其他任何目录)管理的,iOS用于定位应用程序的文档目录并在其中写入数据。每个应用程序在文件系统中都有自己的小空间,你不能在这个空间之外读写。当用户同步其设备时,将备份Documents目录,这也很有用。在上面的答案中添加了示例。