일정시간이 지난 파일 자동 삭제하기
앱실행할때 호출
//일정 시간 지난 미디어 파일 지우기
[self deleteOverDateMediaFile];
//삭제 기준 날짜 가져오기
-(float)getDeleteStandardDateSeconds{
//기준이 되는 날짜
// 1. 3일 전 날짜를 구함 -> 데이터 포멧 변환 -> string으로 변환 -> 초 로변환 (568393200.000000)
NSDateComponents* deltaComps = [[NSDateComponents alloc] init];
[deltaComps setDay: -3];
NSDate* tomorrow = [[NSCalendar currentCalendar] dateByAddingComponents:deltaComps toDate:[NSDate date] options:0];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyyMMdd";
NSString *dateString = [dateFormatter stringFromDate:tomorrow];
NSLog(@"날짜 스트링 타입 : %@" , dateString);
NSDate *dateDate = [dateFormatter dateFromString:dateString];
NSLog(@"날짜 데이트 타입 : %@" , dateDate);
NSTimeInterval seconds = [dateDate timeIntervalSinceReferenceDate];
NSLog(@"초로변환 : %f" , seconds);
return seconds;
}
//일정 시간 지난 미디어 파일 지우기
-(void)deleteOverDateMediaFile{
//삭제 기준이 되는 초로 변환된 데이터
float deleteDateStandardSeconds = [self getDeleteStandardDateSeconds];
[self startDeleteMediaFile:@"/video" deleteStandardSeconds:deleteDateStandardSeconds ];
[self startDeleteMediaFile:@"/audio" deleteStandardSeconds:deleteDateStandardSeconds ];
[self startDeleteMediaFile:@"/photo" deleteStandardSeconds:deleteDateStandardSeconds ];
}
//비디오, 오디오, 사진 파일 삭제
-(void) startDeleteMediaFile :(NSString *) fileName deleteStandardSeconds:(float) second{
//파일 매니져
NSFileManager *fm = [NSFileManager defaultManager];
//최종 문서 폴더
NSArray *DocumentDrectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *bigDir = [DocumentDrectory[0] stringByAppendingFormat:@"%@",fileName];
//디렉토리 존재여부
if ([fm isWritableFileAtPath:bigDir] ) {
NSLog(@" %@ Dir가 존재합니다." , bigDir);
}else{
NSLog(@" %@ Dir가 존재하지 않습니다." ,bigDir);
}
//폴더 안에 있는 날짜 폴더들
NSError *err;
NSArray *smallDateFileArray = [fm contentsOfDirectoryAtPath:bigDir error:&err];
if (err == nil) {
//날짜 폴더 개수별로 개수
for (int i = 0 ; i < (unsigned long)[smallDateFileArray count]; i++) {
NSString *folderPathToDelete = [bigDir stringByAppendingFormat:@"/%@/",[smallDateFileArray objectAtIndex:i] ];
//String 폴더명 가져와서 날짜 타입으로 바꾸고 숫자로 바꿔주기
NSString *dateFileNameString = [smallDateFileArray objectAtIndex:i];
NSDateFormatter *fileDateFormatter = [[NSDateFormatter alloc] init];
[fileDateFormatter setDateFormat:@"yyyyMMdd"];
NSDate *fileNameDate = [fileDateFormatter dateFromString:dateFileNameString];
NSTimeInterval haveToDeleteSeconds = [fileNameDate timeIntervalSinceReferenceDate];
NSLog(@"초로변환2 : %f" , haveToDeleteSeconds);
//삭제기준 날짜와 비교해서 작으면 (앞의 날짜) 경로를 가져와서 삭제 해준다.
if (second > haveToDeleteSeconds) {
NSError *deleteErr;
[[NSFileManager defaultManager] removeItemAtPath:folderPathToDelete error:&deleteErr];
if (deleteErr != nil) {
NSLog(@"이전 파일 삭제 중 오류가 발생했습니다.");
return;
}else{
NSLog(@"삭제 성공!");
NSLog(@"%@ 폴더는 3일이 지난 파일이기 때문에 삭제 했습니다." , dateFileNameString);
NSLog(@"삭제 경로 : %@ " , folderPathToDelete);
}
}
}
}
}
'ios 뽀개기 > objective-c' 카테고리의 다른 글
이미지 자르기 (0) | 2019.01.27 |
---|---|
UIpangesture로 UIView 옮기기& 특정 프레임 넘어가지 않게 설정 (0) | 2019.01.25 |
날짜데이터를 문자로 변환 (0) | 2019.01.09 |
AppDelegate 사용자 터치 감지하기 (0) | 2019.01.04 |
최상위 viewController 클래스의 이름 가져오기 (0) | 2019.01.04 |
댓글