2013-07-09 2 views
1

파일을 복사하면 응용 프로그램이 리소스에서 캐시 디렉토리로 실행이 완료됩니다. 하지만 파일을 복사하는 동안 진행률 표시 줄을 업데이트하고 싶습니다.NSFileManager를 사용하여 파일을 복사하는 동안 진행률 표시 줄이 변경됩니다.

나는 아래의 코드로 파일을 복사 :

-(BOOL)copyDirectory:(NSString*)source toDirectory:(NSString*)targat 
{ 
    BOOL retVal = YES; 
    NSFileManager *fileManager = [[NSFileManager alloc] init]; 

    NSError *error; 
    if ([fileManager fileExistsAtPath:targat] == YES) 
    { 
     NSError *error = nil; 
     [fileManager removeItemAtPath:targat error:&error]; 
    } 


    if(![fileManager copyItemAtPath:source 
          toPath:targat 
           error:&error]) 
    { 
     NSLog(@"Error copy files: %@", [error description]); 
     retVal = NO; 
    } 
    [fileManager release]; 

    return retVal; 
} 

내가 어떻게 파일을 복사의 진행에 따라 진행 표시 줄을 업데이트하는 좋은 아이디어에 대해 생각할 수 없다. 높은 수준에서

답변

5

다음과 같은 접근 할 수

  1. 주기적으로 읽고 별도의 스레드에서 복사 프로세스를 실행 (P1)
  2. 실행 다른 스레드 (P2) (100ms마다 말) 대상 파일을 current_size.
  3. 계산은 current_size/total_size
  4. 업데이트 당신은 당신이 실제로 그것을 열 필요가 없습니다, 당신은 단지 파일의 크기를 찾으려면 다음 바 UI 요소

을 진행. 다음과 같이 NSFileManager을 사용하십시오.

+0

복사가 완료되면 알려주는 별도의 스레드에서 복사하는 방법을 보여주는 샘플 코드가 있습니까? –

관련 문제