众所周知,iOS11以前的版本咱们没法看到应用里边的任何文件,这主要是因为iOS的沙盒机制致使的。在咱们应用的沙盒里边,有三个文件夹供咱们使用来存储文件。分别是Documents
、Library
、tmp
。spa
不过因为iOS11系统中增长了一个Files
的应用,致使Documents
和Library
有些细微的变化。code
Files 能够集中管理iOS上应用内建立的文件,以及各个云盘服务中保存的文件。cdn
Files会自动整合应用内公开的全部文件,其实就是Documents
文件夹中全部的文件。可是有时候咱们存储的用户的数据不想让用户看到,这时应该怎么办呢?这时候咱们能够将数据存储到ApplicationSupport
文件夹。这个文件夹与Documents
基本同样,除了一个能被用户看到,一个是隐藏的。blog
咱们新建一个工程,而后在Info.plist中增长Application supports iTunes file sharing和Supports opening documents in place这两个选项,而且设置为YES ip
Application supports iTunes file sharing 能够经过iTunes操做手机上APP的
Documents
中的内容,实现了文件的共享ci
加上了这两个值以后,此时应用的Documents
文件夹中的内容就能够经过Files应用看到了。 get
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);
NSError *error = nil;
BOOL success = [URL setResourceValue:[NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey error: &error];
if(!success){
NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
}
return success;
}
复制代码
主要用于当咱们下载某个文件到手机的时候,若是此时手机的存储空间不够用,能够先提示用户。不然不会下载,增长用户的体验博客
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:NSTemporaryDirectory()];
NSError *error = nil;
NSDictionary *results = [fileURL resourceValuesForKeys:@[NSURLVolumeAvailableCapacityForImportantUsageKey] error:&error];
if (!results) {
NSLog(@"Error retrieving resource keys: %@\n%@", [error localizedDescription], [error userInfo]);
abort();
}
NSLog(@"Available capacity for important usage: %@", results);
复制代码