2012-07-25 2 views
0

문제가 있습니다. Documents 하위 디렉토리의 내용을 Documents 디렉토리의 '루트'로 이동해야합니다. 이렇게하려면 하위 디렉터리의 모든 내용을 Documents 디렉터리로 복사 한 다음 내 하위 디렉터리를 삭제하는 것이 좋습니다.디렉토리의 내용을 Documents 디렉토리에 복사

NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *documentinbox = [documentsDirectory stringByAppendingPathComponent:@"inbox"] 

이것은 문서 디렉토리의 경로와받은 편지함의 하위 디렉토리 경로를 얻는 방법입니다.

NSArray *inboxContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentinbox error:nil]; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 

그런 다음 하위 폴더에 모든 문서가있는 배열을 만들고 파일 관리자를 초기화합니다.

이제는 각 문서에 대해 문서를 하위 디렉터리에서 문서 디렉터리로 복사해야하는주기를 구현해야합니다.

for(int i=0;i<[inboxContents count];i++){ 
    //here there is the problem, I don't know how to copy each file 

moveItemAtPath 메서드를 사용하고 싶습니다. 그러나 각 파일의 경로를 얻는 방법을 모르겠습니다.

당신이 내 문제를 이해하고 다음과 같이 moveItemAtPath:toPath:error:을 사용할 수 있습니다 도움 니코

+0

앱 번들 디렉토리에서 파일을 삭제할 수 없으므로 moveItemAtPath가 작동하지 않습니다. –

+0

@ H2CO3 documents 디렉토리가 번들의 일부가 아닙니다. – Joe

+0

@Joe right, 죄송합니다. 질문을 잘못 읽었습니다. 발생하는 일반적인 문제는 XXXX.app (*는 번들 자체)에 쓸 수 없습니다. –

답변

2

에 대한 감사합니다 수 있기를 바랍니다.

NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *documentinbox = [documentsDirectory stringByAppendingPathComponent:@"inbox"]; 

//Initialize fileManager first 
NSFileManager *fileManager = [NSFileManager defaultManager]; 

//You should always check for errors 
NSError *error; 
NSArray *inboxContents = [fileManager contentsOfDirectoryAtPath:documentinbox error:&error]; 
//TODO: error handling if inboxContents is nil 

for(NSString *source in inboxContents) 
{ 
    //Create the path for the destination by appending the file name 
    NSString *dest = [documentsDirectory stringByAppendingPathComponent: 
         [source lastPathComponent]]; 

    if(![fileManager moveItemAtPath:source 
          toPath:dest 
          error:&error]) 
    { 
     //TODO: Handle error 
     NSLog(@"Error: %@", error); 
    } 
} 
관련 문제