iOS의 파일 작업(NSSearchPathForDirectoriesInDomains)
iOS에서 NSSearchPathForDirectoriesInDomains 함수 매개 변수인 NSDocumentDirectory, NSDownloadsDirectory의 의미는 iOS가 그의 기본 함수에 대해 잘 모르기 때문에 프로그램을 쓸 때 모든 매개 변수를 테스트했다. 이렇게 하면 자신이 기억할 수 있다. 다음은 테스트 결과: NSDocumentDirectory
-(NSString *) dataFilePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory=[paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:@"data.plisg"];
}
return value:
path:/Users/admin/Library/Application Support/iPhone Simulator/5.0/Applications/4BC5DA66-B3CA-4056-927B-999BC4DBF3CE/Documents/data.plist
NSDocumentationDirectory
-(NSString *) dataFilePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory , NSUserDomainMask, YES);
NSString *documentsDirectory=[paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:@"data.plisg" ];
}
return value:
path:/Users/admin/Library/Application Support/iPhone Simulator/5.0/Applications/4BC5DA66-B3CA-4056-927B-999BC4DBF3CE/Library/Documentation/data.plist
NSDownloadsDirectory
-(NSString *) dataFilePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDownloadsDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory=[paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:@"data.plisg" ];
}
return value:
path:/Users/admin/Library/Application Support/iPhone Simulator/5.0/Applications/4BC5DA66-B3CA-4056-927B-999BC4DBF3CE/Downloads/data.plisg
다음으로 이동:http://marshal.easymorse.com/archives/3340
iOS의 파일 작업
샌드박스(sandbox)에 적용되기 때문에 파일 읽기와 쓰기 권한이 제한되어 몇 개의 디렉터리에서만 파일을 읽을 수 있습니다.
코드는 다음과 같습니다.
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask , YES); NSLog(@"Get document path: %@",[paths objectAtIndex:0]);
NSString *fileName=[[paths objectAtIndex:0] stringByAppendingPathComponent:@"myFile"]; NSString *content=@"a"; NSData *contentData=[content dataUsingEncoding:NSASCIIStringEncoding]; if ([contentData writeToFile:fileName atomically:YES]) { NSLog(@">>write ok."); }
ssh 로그인 장치를 통해 Documents 디렉터리에 생성된 파일을 볼 수 있습니다.
위에서 설명한 ascii 인코딩 텍스트 파일을 만듭니다. 예를 들어 다음과 같이 한자를 사용할 수 있습니다.
NSString *fileName=[[paths objectAtIndex:0] stringByAppendingPathComponent:@"myFile"];NSString *content=@ "밤이 깊어지면 사람이 멈춘다". NSData *contentData=[content dataUsingEncoding:NSUnicodeStringEncoding]; if ([contentData writeToFile:fileName atomically:YES]) { NSLog(@">>write ok."); }
ascii 인코딩을 사용하면 파일이 생성되지 않습니다.여기서 NSUnicodeStringEncoding을 사용하면 됩니다.
filezilla에서 만든 파일에 다운로드하여 열면 중국어에 문제가 없습니다.
다른 디렉토리에서 파일 만들기
Caches 카탈로그와 같은 다른 파일 카탈로그를 지정하려면 카탈로그 공장 상수를 변경해야 합니다. 위의 코드는 변경되지 않습니다.
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSCachesDirectory , NSUserDomainMask , YES);
NSSearchPathForDirectoriesInDomains를 사용하면 Caches 디렉토리와 Documents 디렉토리만 찾을 수 있습니다.
tmp 디렉터리, 위의 방법에 따라 디렉터리를 얻을 수 없습니다. 함수가 적용되는 루트 디렉터리를 얻을 수 있습니다.
NSHomeDirectory()
즉 Documents의 상급 디렉터리이며, 당연히 tmp 디렉터리의 상급 디렉터리이기도 하다.그러면 파일 경로는 다음과 같이 쓸 수 있습니다.
NSString *fileName=[NSHomeDirectory() stringByAppendingPathComponent:@"tmp/myFile.txt"];
또는 보다 직접적으로 이 함수를 사용할 수 있습니다.
NSTemporaryDirectory()
그러나 생성된 경로는 다음과 같습니다.
…/tmp/-Tmp-/myFile.txt
리소스 파일 사용
응용 프로그램을 작성할 때는 다음과 같은 리소스 파일을 자주 사용합니다.
디바이스에 설치된 후 app 디렉토리의
다음 코드는 파일을 가져오고 파일 내용을 인쇄하는 방법을 보여 줍니다.
NSString *myFilePath = [[NSBundle mainBundle] pathForResource:@"f" ofType:@"txt"]; NSString *myFileContent=[NSString stringWithContentsOfFile:myFilePath encoding:NSUTF8StringEncoding error:nil]; NSLog(@"bundel file path: %@ file content:%@",myFilePath,myFileContent);
코드 실행 효과:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.