ios filemanager 관련 모듈
#import <Foundation/Foundation.h>
@interface IDFileManager : NSObject
- (NSURL *) tempFileURL;
- (void) removeFile:(NSURL *)outputFileURL;
- (void) copyFileToDocuments:(NSURL *)fileURL;
- (void) copyFileToCameraRoll:(NSURL *)fileURL;
@end
#import "IDFileManager.h"
#import <AssetsLibrary/AssetsLibrary.h>
@implementation IDFileManager
//현재 파일 위치
- (NSURL *)tempFileURL
{
NSString *path = nil;
NSFileManager *fm = [NSFileManager defaultManager];
NSInteger i = 0;
while(path == nil || [fm fileExistsAtPath:path]){
path = [NSString stringWithFormat:@"%@output%ld.mov", NSTemporaryDirectory(), (long)i];
i++;
}
return [NSURL fileURLWithPath:path];
}
//파일 삭제
- (void) removeFile:(NSURL *)fileURL
{
NSString *filePath = [fileURL path];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:filePath]) {
NSError *error;
[fileManager removeItemAtPath:filePath error:&error];
if(error){
NSLog(@"error removing file: %@", [error localizedDescription]);
}
}
}
//다큐먼트에 기록
- (void) copyFileToDocuments:(NSURL *)fileURL
{
NSLog(@"IDFileManager copyFileToDocuments - 다큐먼트에 기록시작");
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSLog(@"IDFileManager documentsDirectory : %@ ", documentsDirectory);
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd_HH-mm-ss"];
NSString *destinationPath = [documentsDirectory stringByAppendingFormat:@"/output_%@.mov", [dateFormatter stringFromDate:[NSDate date]]];
NSLog(@"IDFileManager destinationPath : %@ ", destinationPath);
NSError *error;
//넘어온 url 위치에 있는 파일을 -> 새로 지정한 url 위치로 복사해라
[[NSFileManager defaultManager] copyItemAtURL:fileURL toURL:[NSURL fileURLWithPath:destinationPath] error:&error];
if(error){
NSLog(@"error copying file: %@", [error localizedDescription]);
}
}
//카메로 롤로 파일 저장
- (void)copyFileToCameraRoll:(NSURL *)fileURL
{
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
if(![library videoAtPathIsCompatibleWithSavedPhotosAlbum:fileURL]){
NSLog(@"video incompatible with camera roll");
}
NSLog(@"IDFileManager copyFileToCameraRoll - 사진첩에 기록 시작");
[library writeVideoAtPathToSavedPhotosAlbum:fileURL completionBlock:^(NSURL *assetURL, NSError *error) {
if(error){
NSLog(@"Error: Domain = %@, Code = %@", [error domain], [error localizedDescription]);
} else if(assetURL == nil){
//It's possible for writing to camera roll to fail, without receiving an error message, but assetURL will be nil
//Happens when disk is (almost) full
NSLog(@"Error saving to camera roll: no error message, but no url returned");
} else {
//remove temp file
NSError *error;
NSLog(@"IDFileManager copyFileToCameraRoll - 파일 매니져 removeItemAtURL-remove temp file ");
[[NSFileManager defaultManager] removeItemAtURL:fileURL error:&error];
if(error){
NSLog(@"error: %@", [error localizedDescription]);
}
}
}];
}
@end
'ios 뽀개기 > objective-c' 카테고리의 다른 글
objective c block에 대한 이해 (0) | 2018.12.10 |
---|---|
UIImagePickerController를 이용한 비디오 (0) | 2018.12.07 |
ios 사이드 메뉴 (0) | 2018.12.05 |
ios objective c sha256 해쉬 sha 512 함수 (0) | 2018.12.05 |
ios 카메라를 만드는 두가지 방법 - 설명 (0) | 2018.12.04 |
댓글