衆所周知,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);
複製代碼