반응형
NSData를 파일에 쓰는 가장 쉬운 방법
NSData *data;
data = [self fillInSomeStrangeBytes];
내 질문은 이제 data
파일에 가장 쉬운 방법으로 이것을 작성할 수 있는 방법입니다.
(이미 NSURL이 있습니다 file://localhost/Users/Coding/Library/Application%20Support/App/file.strangebytes
)
NSData
writeToURL:atomically:
원하는 작업을 정확히 수행 하는 메서드 가 있습니다. 에 봐 에 대한 문서NSData
를 사용하는 방법을 참조하십시오.
NSData
파일에 쓰는 것은 주 스레드를 차단할 수있는 IO 작업입니다. 특히 데이터 개체가 큰 경우.
따라서 백그라운드 스레드에서이 작업을 수행하는 것이 좋습니다. 가장 쉬운 방법은 다음과 같이 GCD를 사용하는 것입니다.
// Use GCD's background queue
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
// Generate the file path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"yourfilename.dat"];
// Save it into file system
[data writeToFile:dataPath atomically:YES];
});
writeToURL : atomically : 또는 writeToFile : atomically : URL 대신 파일 이름이있는 경우.
또한이 writeToFile:options:error:
나 writeToURL:options:error:
있는이 경우의 구원 오류 코드를보고 할 수 있습니다 NSData
어떤 이유로 실패했습니다. 예를 들면 :
NSError *error;
NSURL *folder = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:true error:&error];
if (!folder) {
NSLog(@"%s: %@", __FUNCTION__, error); // handle error however you would like
return;
}
NSURL *fileURL = [folder URLByAppendingPathComponent:filename];
BOOL success = [data writeToURL:fileURL options:NSDataWritingAtomic error:&error];
if (!success) {
NSLog(@"%s: %@", __FUNCTION__, error); // handle error however you would like
return;
}
참고 URL : https://stackoverflow.com/questions/679104/the-easiest-way-to-write-nsdata-to-a-file
반응형
'UFO ET IT' 카테고리의 다른 글
React Native에서 텍스트 입력을 올바르게 정렬하는 방법은 무엇입니까? (0) | 2020.11.19 |
---|---|
laravel 설치 프로그램을 사용하여 특정 버전 설치 (0) | 2020.11.19 |
log4j 두 번 로깅 (0) | 2020.11.19 |
클래스 내부의 실제 정적 상수에 대한 enum 대 constexpr (0) | 2020.11.18 |
해당하는 모나드 변환기 (IO 제외)가없는 모나드가 있습니까? (0) | 2020.11.18 |