2010-07-20 4 views
0

다음 코드를 사용하여 파일의 내용을 열고 다른 파일에 저장합니다. 원래 파일 길이를 실행하면 793이지만 저장된 파일은 0입니다. 파일 복사 만 시도했습니다. 아무것도 작동하는 것 같습니다.NSString writeToFile의 문제

문서 디렉토리에 누락 된 권한이 있습니까?

NSError *error; 
    NSString *basePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString* nGram = [basePath stringByAppendingPathComponent:@"contacts.gram"]; 
NSString *oGram = [basePath stringByAppendingPathComponent:@"/../vText.app/model/lm/TAR9230/contacts.gram"]; 
     NSString *gramString = [[NSString alloc] initWithContentsOfFile:oGram encoding:NSUTF8StringEncoding error:&error]; 
     BOOL ok = [gramString writeToFile:nGram atomically:NO encoding:NSUnicodeStringEncoding error:&error]; 
     if(!ok) NSLog(@"Mayday!"); 
     NSLog(@"%d",[gramString length]); 
     gramString = [[NSString alloc] initWithContentsOfFile:nGram encoding:NSUTF8StringEncoding error:&error]; 
     NSLog(@"%d",[gramString length]); 
+0

어떻게 문서 폴더의 경로를 검색합니까? [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex : 0]; 나를 위해 좋은 직업. – samsam

+0

죄송합니다. 문서 경로 게터를 추가하지 않았습니다. – Kungfurabbits

+0

오류가보고 되나요? 당신은 결코 그들을 체크하는 것처럼 보이지 않습니다. 문제가되는 – TechZen

답변

1

이 전체 블록은 필요하지 않습니다. 당신이 필요로하는 것입니다 :

NSString *fp=[[NSBundle mainBundle] pathForResource:@"contacts" ofType:@"gram"]; 
NSString *gramString = [[NSString alloc] initWithContentsOfFile:fp 
                 encoding:NSUTF8StringEncoding 
                  error:&error]; 
당신은 확실히 파일이 모든 빌드에서 똑같은 장소에서 보장되지 않기 때문에 직접 하드 코딩 된 경로를 사용하여 응용 프로그램 번들에있는 파일에 액세스하려고하지 않으

.

코드에는 작성시 사용한 것과 동일한 인코딩 상수를 읽고 싶습니다. NSUnicodeStringEncoding으로 작성하지만 NSUTF8StringEncoding으로 읽습니다. 이것들은 중첩되어야하지만 사용 된 정확한 코딩을 안다면 왜 그 기회를 잡을까요?

+0

; NSUnicodeStringEncoding => NSUTF8StringEncoding; 내가 어떻게 그리워했는지, 정말 고마워. 보조 참고에 – Kungfurabbits

+0

, pathForResource는 재귀입니까? 귀하의 코드에서 그것은 나타납니다. 다시 한 번 감사드립니다. – Kungfurabbits

+1

예. 앱 번들에 상관없이 리소스를 찾습니다. 원하는 경우'pathForResource : ofType : inDirectory :'또는 관련 메소드를 사용하여 제한 할 수 있습니다. – TechZen