在iphone上存储文件并通过URL检索文件的正确方法

时间:2011-03-10 23:51:00

标签: iphone

在iphone上存储文件的正确/最佳方法是什么?

我想将文件保存在iphone的某个目录中。我已经读过,归档用户主目录不是很好的做法。

文件应存储在何处以及如何保存这些文件的URL?因此,在将多个文件保存到用户手机后,可以存储URL以便稍后管理文件。

我想存储文件,保留文件句柄并将这些句柄存储在数据结构中,以及稍后使用数据结构中的URL检索文件,以便可以访问和删除文件。

这样做的正确/最佳方式是什么?

1 个答案:

答案 0 :(得分:-2)

文件存储在App的Documents文件夹中。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
[paths lastObject];

将为您提供文档路径。

然后我会使用NSKeyedArchiverNSKeyedUnarchiver来存储网址,并将其放入文档中。

要查看文档目录中的内容,只需使用NSFileManager contentsOfDirectoryAtPath:error:方法,即可返回方便的NSArray。打电话给lastObject然后你去吧。

<强>更新: 必须使用NSKeyedArchiverNSKeyedUnarchiverNSURL进行编码和解码,因为它们不是plists的基本对象。虽然您可以将它们转换为字符串,但您可以使用[array writeToFile:file atomically:YES]。另一个选项是CoreData,但这可能有点多。

最好将所有网址存储在一个文件中,只需在删除和添加网址时覆盖并进行更改。

您没有填写用户的文档目录,您正在填写应用程序的文档目录。文档文件夹是您用户生成的文件的位置。将来您可能决定将Document目录打开到iTunes,以便用户可以通过这种方式添加和删除文件。与应用程序相关的事情应该存储在Library文件夹中。

我希望这能解释我到底有什么好转的。我似乎得到的印象是,您只想将URL存储为单个文件并存储句柄。您可以获取句柄但只知道存储所有内容的目录。获取该文件夹中的文件数组,然后使用unarchiver或initWithFileContents: NSDictionaryNSArray加载它们}。