IOS沙盒機制
IOS運用法式只能在為該改法式創立的文件體系中讀取文件,弗成以去其它處所拜訪,此區域被成為沙盒,所以一切的非代碼文件都要保留在此,例如圖象,圖標,聲響,映像,屬性列表,文本文件等。
翻開模仿器沙盒目次
辦法1、可以設置顯示隱蔽文件,然後在Finder下直接翻開。設置檢查隱蔽文件的辦法以下:翻開終端,輸出定名
<p class="p1">顯示Mac隱蔽文件的敕令:
defaults write com.apple.finder AppleShowAllFiles -bool true</p><p class="p1">
隱蔽Mac隱蔽文件的敕令: defaults write com.apple.finder AppleShowAllFiles -bool false</p>
如今能看到資本庫文件夾了。
翻開資本庫後找到/Application Support/iPhone Simulator/文件夾。這外面就是模仿器的各個法式的沙盒目次了。
辦法2、這類辦法更便利,在Finder上點->前去 然後按住"option"鍵,就會湧現"資本庫",其他同上
目次構造
默許情形下,每一個沙盒含有3個文件夾:Documents, Library 和 tmp。由於運用的沙盒機制,運用只能在幾個目次下讀寫文件
Documents:蘋果建議將法式中樹立的或在法式中閱讀到的文件數據保留在該目次下,iTunes備份和恢復的時刻會包含此目次
Library:存儲法式的默許設置或其它狀況信息;
Library/Caches:寄存緩存文件,iTunes不會備份此目次,此目次下文件不會在運用加入刪除
tmp:供給一個即時創立暫時文件的處所。
iTunes在與iPhone同步時,備份一切的Documents和Library文件。
iPhone在重啟時,會拋棄一切的tmp文件。
這是下面提到的三個目次 :Documents、Library、 tmp
幾個經常使用的代碼示例:
1、獲得法式的Home目次
NSString *homeDirectory = NSHomeDirectory();
NSLog(@"path:%@", homeDirectory);
2、獲得document目次
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
3、獲得Cache目次
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"%@", path);
4、獲得Library目次
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"%@", path);
5、獲得Tmp目次
NSString *tmpDir = NSTemporaryDirectory();
NSLog(@"%@", tmpDir);
6、寫入文件
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];
if (!docDir) {
NSLog(@"Documents 目次未找到");
}
NSArray *array = [[NSArray alloc] initWithObjects:@"內容",@"content",nil];
NSString *filePath = [docDir stringByAppendingPathComponent:@"testFile.txt"];
[array writeToFile:filePath atomically:YES];
7、寫入文件
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];
NSString *filePath = [docDir stringByAppendingPathComponent:@"testFile.txt"];
NSArray *array = [[NSArray alloc]initWithContentsOfFile:filePath];
NSLog(@"%@", array);
8、斷定一個文件能否存在,傳入全途徑(fileExistsAtPath)
// 創立文件治理器
NSFileManager * fileManager = [NSFileManager defaultManager];
NSString * documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSString * filePath = [documents stringByAppendingPathComponent:@"test"];
// 斷定一個文件能否存在,傳入全途徑
if ([fileManager fileExistsAtPath:filePath]) {
NSLog(@"it is exit");
}
9、在Documents裡創立目次
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"documentsDirectory%@",documentsDirectory);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testDirectory = [documentsDirectory stringByAppendingPathComponent:@"test"];
// 創立目次
[fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil];
10、在目次下創立文件
NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test00.txt"];
NSString *testPath2 = [testDirectory stringByAppendingPathComponent:@"test22.txt"];
NSString *testPath3 = [testDirectory stringByAppendingPathComponent:@"test33.txt"];
NSString *string = @"寫入內容,write String";
[fileManager createFileAtPath:testPath contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
[fileManager createFileAtPath:testPath2 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
[fileManager createFileAtPath:testPath3 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
11、獲得目次列裡一切文件名
兩種辦法獲得:subpathsOfDirectoryAtPath 和subpathsAtPath
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"documentsDirectory%@",documentsDirectory);
NSFileManager *fileManage = [NSFileManager defaultManager];
NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@"test"];
NSArray *file = [fileManage subpathsOfDirectoryAtPath: myDirectory error:nil];
NSLog(@"%@",file);
NSArray *files = [fileManage subpathsAtPath: myDirectory ];
NSLog(@"%@",files);
12、fileManager應用操作以後目次
//創立文件治理器
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
//更改到待操作的目次下
[fileManager changeCurrentDirectoryPath:[documentsDirectory stringByExpandingTildeInPath]];
//創立文件fileName文件稱號,contents文件的內容,假如開端沒有內容可以設置為nil,attributes文件的屬性,初始為nil
NSString * fileName = @"testFileNSFileManager.txt";
NSArray *array = [[NSArray alloc] initWithObjects:@"hello world",@"hello world1", @"hello world2",nil];
[fileManager createFileAtPath:fileName contents:array attributes:nil];
13、刪除文件
[fileManager removeItemAtPath:fileName error:nil];
【舉例詳解iOS開辟進程中的沙盒機制與文件】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!