FileManager
.h
#import <Foundation/Foundation.h>
@interface FileManager : NSObject
//임시파일 저장 URL
-(NSURL*) tempFileURL;
//삭제할 파일이 있는 URL
-(void) removeFile:(NSURL *) outputFileURL;
//복사할 문서가 있는 위치 URL 넣고 그곳으로 복사
-(void)copyFileToDocuments:(NSURL *)fileURL;
//카메라롤에 복사
-(void)copyFileToCameraRoll:(NSURL *)fileURL;
@end
.m
#import "FileManager.h"
#import <AssetsLibrary/AssetsLibrary.h>
@implementation FileManager
//현재 파일 위치
- (NSURL *)tempFileURL{
NSLog(@"FileManager - tempFileURL 메소드 진입");
NSString *path = nil;
NSFileManager *fm = [NSFileManager defaultManager];
NSInteger i = 0;
//fileExistsAtPath: 해당 경로에 파일이 존재하는 지 확인
while (path == nil || [fm fileExistsAtPath:path]) {
path = [NSString stringWithFormat:@"%@output%ld.mov" ,NSTemporaryDirectory(),(long)i];
i++;
}
//임시 파일 저장 경로 반환
return [NSURL fileURLWithPath:path];
}
//파일삭제
- (void)removeFile:(NSURL *)outputFileURL{
NSLog(@"FileManager - removeFile 메소드 진입");
NSString *filePath = [outputFileURL path];
NSFileManager *fm = [NSFileManager defaultManager];
//파일이 해당 URL에 존재하는지 확인
if ([fm fileExistsAtPath:filePath]) {
NSError *error;
//파일 삭제
[fm removeItemAtPath:filePath error:&error];
if (error) {
NSLog(@"error :파일 삭제중 오류가 발생했습니다. : %@" , [error localizedDescription]);
}
}
}
//문서에 기록
- (void)copyFileToDocuments:(NSURL *)fileURL{
NSLog(@"FileManager - copyFileToDocuments 메소드 진입");
//문서 경로
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
//날짜포멧 설정
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd_HH-mm-ss"];
//video 폴더 존재 유무 확인 + 없을 경우 생성
NSString *destinationPath = [documentsDirectory appendPath:@"/video"];
NSFileManager *fm = [[NSFileManager alloc]init];
if ([fm isWritableFileAtPath:destinationPath]) {
NSLog(@"이미 video 폴더는 존재합니다.");
}else{
//존재하지 않을경우 생성
NSError *error = nil;
if ([fm createDirectoryAtPath:destinationPath withIntermediateDirectories:YES attributes:nil error:&error]) {
NSLog(@"video 폴더 생성 성공");
}else{
NSLog(@"video 폴더 생성 실패");
}
}
//최종 저장 경로
NSString *videoFileDestinationPath = [documentsDirectory stringByAppendingFormat:@"/video/%@.mov",[dateFormatter stringFromDate:[NSDate date]]];
NSError *error;
//임시저장폴더 경로에서 최종저장 경로로 파일 옮기기
[[NSFileManager defaultManager]copyItemAtURL:fileURL toURL:[NSURL fileURLWithPath:videoFileDestinationPath] error:&error];
if (error) {
NSLog(@"error : 파일 저장중 오류가 발생했습니다.: %@", [error localizedDescription]);
}else{
NSLog(@"비디오 파일이 성공적으로 저장되었습니다.");
}
}
//카메라 롤에 기록
- (void)copyFileToCameraRoll:(NSURL *)fileURL{
NSLog(@"FileManager - copyFileToCameraRoll 메소드 진입");
ALAssetsLibrary *libary = [[ALAssetsLibrary alloc]init];
if (![libary videoAtPathIsCompatibleWithSavedPhotosAlbum:fileURL]) {
NSLog(@"error : 포토앨범에 저장할 수 있는 설정이 아닙니다.");
}
//카메라 롤에 저장
[libary writeVideoAtPathToSavedPhotosAlbum:fileURL completionBlock:^(NSURL *assetURL, NSError *error) {
if (error) {
NSLog(@"error : domain = %@, code = %@" , [error domain], [error localizedDescription]);
}else if (assetURL == nil ){
//카메라 앨범 용량이 꽉찾을때
NSLog(@"포토엘범에 저장할때 오류가 발생했습니다.");
}else{
//임시파일 삭제
NSError *error;
[[NSFileManager defaultManager] removeItemAtURL:fileURL error:&error];
if (error) {
NSLog(@"error : %@" , [error localizedDescription]);
}
}
}];
}
@end
'ios 뽀개기 > objective-c' 카테고리의 다른 글
ios 저장 용량 계산 (0) | 2018.12.27 |
---|---|
ios 오디오 + 비디오 권한 체크 함수 (0) | 2018.12.20 |
audiosessionQueue play - 코어오디오 재생하기 (0) | 2018.12.19 |
ios audiosessionqueue 파일 재생 시간 구하는 두가지 방법 (0) | 2018.12.19 |
coreAudio recording (0) | 2018.12.19 |
댓글