【问题标题】:How to hide folders created in Document Directory in ios?如何隐藏在 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 中,它应该只用于用户文档(请参阅下面的替代位置来存储应用程序数据)。

标签: ios ios4 ios5 ios-simulator


【解决方案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 它位于应用沙箱内,因此是私有的。
猜你喜欢
  • 2013-08-06
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 2013-01-07
  • 1970-01-01
  • 2016-06-12
相关资源
最近更新 更多