我可以用“不备份”属性标记文档目录吗?

Posted

技术标签:

【中文标题】我可以用“不备份”属性标记文档目录吗?【英文标题】:Can I mark Documents directory with "do not backup" attribute? 【发布时间】:2013-04-15 07:19:38 【问题描述】:

我读过我可以用“不备份”属性标记文件夹。 据我了解,在这种情况下,目录的所有内容都将从备份中排除。 在我们的应用中,我们需要从备份中排除 Documents 目录中的所有文件(这些文件可以在应用执行期间从 Documents 中添加或删除)。 我们需要将文件存储在 Documents 中,因为我们使用“应用程序支持 iTunes 文件共享”功能。 我们可以用“不备份属性”标记文档目录吗? 苹果允许这样做吗? 这会成为拒绝我们应用的理由吗?

【问题讨论】:

【参考方案1】:

根据苹果

ios 5.0 及更早版本中,将文件放在 /Library/Caches 目录以防止它们被 已备份

在 iOS 5.0.1 及更高版本中,将文件放在 /Library/Application Support 目录并应用 com.apple.MobileBackup 为它们扩展属性。此属性可防止将文件备份到 iTunes 或 iCloud。如果你 有大量的支持文件,您可以将它们存储在自定义 子目录并将扩展属性仅应用于目录。

据我所知 您不能使用不备份属性标记文档目录

1)您可以使用下面的代码 sn-p 标记文档目录中的各个文件

- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)filePathString 
        NSURL *fileURL =
        [NSURL fileURLWithPath:filePathString];

        assert([[NSFileManager defaultManager] 
        fileExistsAtPath: [fileURL path]]);

        NSError *error = nil;

        BOOL success = [fileURL setResourceValue:[NSNumber numberWithBool:YES]
                                      forKey:NSURLIsExcludedFromBackupKey
                                     error:&error];
        return success;
    

2)您可以在文档文件夹中创建一个子目录并为其应用扩展属性。

您可以使用以下语法设置扩展属性。

int result = setxattr(path, attrName, myDataBytes, [myData length], 0, 0);

您可以在以下link中找到更多关于读写扩展属性的信息

希望对你有帮助

【讨论】:

以上是关于我可以用“不备份”属性标记文档目录吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在颤振应用程序中保存本地磁盘数据库吗?文档目录在哪里创建路径?

应用程序因未遵循 iOS 数据存储指南而被拒绝

鼠标放上后 会自动显示下级目录,这种用html可以实现吗?

我可以在 iOS 中使用 iPodMusicPlayer 播放文档目录中的歌曲吗?

django-项目目录结构

IOS沙盒Files目录说明和常用操作