如何隐藏在 ios 的文档目录中创建的文件夹?

Posted

技术标签:

【中文标题】如何隐藏在 ios 的文档目录中创建的文件夹?【英文标题】:How to hide folders created in Document Directory in ios? 【发布时间】:2012-03-01 17:23:52 【问题描述】:

我以编程方式创建了一些 PDF 文件,我使用以下代码将其存储到设备内存中 >>>>

    NSString *fileName = [NSString stringWithFormat:@"SampleTextFile.pdf",strFinalString];

    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *saveDirectory = [path objectAtIndex:0];
    NSString *saveFileName = fileName;
    NSString *documentPath = [saveDirectory stringByAppendingPathComponent:saveFileName];

我可以在 Devices Document 文件夹中看到该文件。

我想隐藏这些文件,让用户看不到或删除它。

谁能帮我做这件事。

【问题讨论】:

为什么?普通用户无论如何都看不到它们 也许他们的意思是来自 iTunes? 是的,如果您在 info.plist 中设置了文档共享标志,用户可以在 iTunes 中看到 Documents 文件夹中的任何文件。一般来说,您不应该将私有数据文件存储在 Documents 中,它应该只用于用户文档(请参阅下面的替代位置来存储应用程序数据)。 【参考方案1】:

只需在文件名前加上一个点,如.SampleTextFile.pdf

真正的解决方案是首先不将文档存储在NSDocumentDirectory 中。您应该在NSLibraryDirectory 中创建子目录并将这些内容存储在那里。它也会被备份,不会像 Cachestmp 那样被清除,但用户无法通过 iTunes 访问它。

【讨论】:

但用户可以使用 iExplorer 等软件访问 ;)【参考方案2】:

存储私人数据的好地方是~/Library/Application Support/,这是 Mac 上用于此目的的文件夹。

您可以使用以下命令生成此文件夹的路径:

NSString *appSupportDir = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) firstObject];

您必须在第一次使用它时自己创建文件夹,您可以这样做:

if (![[NSFileManager defaultManager] fileExistsAtPath:appSupportDir])

    [[NSFileManager defaultManager] createDirectoryAtPath:appSupportDir withIntermediateDirectories:YES attributes:nil error:NULL];

我编写了一个简单的库,使这个和所有其他有用的 ios 文件夹可以作为 NSFileManager 上的方法使用:https://github.com/nicklockwood/StandardPaths

【讨论】:

+1,有用的类别(并且有很好的记录)。但是有一个请求:如果您在头文件中添加 cmets 以及每种方法的作用,那就太好了。如果有人将您的类别添加到他的项目中并且他的同事看到了它,他可能不知道这些方法应该返回或做什么。 有效点。如果可能的话,我通常喜欢让我的头文件保持整洁,并且 .h 文件中有指向 github 文档的链接,但我可以看到将文档放在头文件中的参数。 这个路径是私有的,还是多个应用程序可以从这个文件夹中读取? @f2prateek 它位于应用沙箱内,因此是私有的。

以上是关于如何隐藏在 ios 的文档目录中创建的文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何将在我的 Javascript 中创建的字符串数组传递给 C# 代码隐藏文件?

我们如何在Android中重用已经在IOS中创建的Sqlite文件[重复]

如何将您在 python 中创建的 .wav 文件保存到指定目录?

如何在dojo工具包的Current JS文件中使用在另一个JS文件中创建的Dialog变量

如何在 iOS 的文档目录中保存带有唯一标签的文件?

如何在故事板中创建的 UITableView 中隐藏单元格?