예 를 들 어 iOS 개발 과정 에서 의 샌 드 박스 메커니즘 과 파일 을 상세 하 게 설명 합 니 다.
7954 단어 iOS
iOS 응용 프로그램 은 이 프로그램 을 위 한 파일 시스템 에서 만 파일 을 읽 을 수 있 고 다른 곳 에 접근 할 수 없습니다.이 영역 은 샌 드 박스 가 되 기 때문에 모든 비 코드 파일 을 여기에 저장 해 야 합 니 다.예 를 들 어 이미지,아이콘,소리,이미지,속성 목록,본문 등 입 니 다.
모든 응용 프로그램 은 자신의 저장 공간 을 가지 고 있다응용 프로그램 은 자신의 담장 을 넘 어 다른 저장 공간 에 접근 할 수 없다.
시 뮬 레이 터 샌 드 박스 디 렉 터 리 열기
방법 1.숨겨 진 파일 을 표시 하고 Finder 에서 직접 열 수 있 습 니 다.숨겨 진 파일 을 보 는 방법 은 다음 과 같 습 니 다.터미널 을 열 고 이름 을 입력 하 십시오.
Mac 숨겨 진 파일 을 표시 하 는 명령:
defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏Mac隐藏文件的命令:
defaults write com.apple.finder AppleShowAllFiles -bool false
이제 자원 라 이브 러 리 폴 더 가 보 입 니 다.자원 라 이브 러 리 를 열 고/application Support/iphone Simulator/폴 더 를 찾 습 니 다.이 안 은 시 뮬 레이 터 의 각 프로그램의 샌 드 박스 디 렉 터 리 입 니 다.
방법 2、이런 방법 이 더 편리 합 니 다.Finder 에서->이동 그리고"option"키 를 누 르 면"자원 라 이브 러 리"가 나타 납 니 다.
디 렉 터 리 구조
기본적으로 샌 드 박스 마다 3 개의 폴 더 가 있 습 니 다:Documents,Library,tmp.응용 샌 드 박스 메커니즘 때문에,응용 프로그램 은 몇 개의 디 렉 터 리 에서 만 파일 을 읽 고 쓸 수 있 습 니 다.
Documents:애플 은 프로그램 에서 만 들 거나 프로그램 에서 탐색 한 파일 데 이 터 를 이 디 렉 터 리 에 저장 하 는 것 을 권장 합 니 다.iTunes 백업 과 복구 시 이 디 렉 터 리 를 포함 합 니 다.
Library:프로그램의 기본 설정 이나 다른 상태 정 보 를 저장 합 니 다.
Library/caches:캐 시 파일 을 저장 합 니 다.iTunes 는 이 디 렉 터 리 를 백업 하지 않 습 니 다.이 디 렉 터 리 에서 파일 은 응용 프로그램 에서 삭제 하지 않 습 니 다.
tmp:임시 파일 을 즉시 만 드 는 곳 을 제공 합 니 다.
iTunes 는 아이 폰 과 동기 화 할 때 모든 Documents 와 Library 파일 을 백업 합 니 다.
아이 폰 은 재 부팅 시 tmp 파일 을 모두 버 립 니 다.
이것 은 위 에서 언급 한 세 개의 디 렉 터 리:Documents,Library,tmp
자주 사용 하 는 코드 예제 몇 개:
1.프로그램의 홈 디 렉 터 리 가 져 오기
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.라 이브 러 리 디 렉 터 리 가 져 오기
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.디 렉 터 리 열 에 있 는 모든 파일 이름 가 져 오기두 가지 방법 으로 얻 을 수 있 습 니 다:subpaths OfDirectory AtPath 와 subpaths AtPath
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];
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.