2013-05-15 2 views
2

URLConnection 사용 URL에서 파일을 다운로드하고 해당 데이터를 문서 디렉토리의 파일에 저장합니다. 나는 응답을받을 때 didReceiveResponse 때 : 메서드가 호출, 나는 파일을 만들고 그 파일의 마지막에 이런 식으로 이동 :NSSearchPathForDirectoriesInDomains NSUserDomainMask

NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:self.fileName]; 
NSLog(@"filepath is %@",filePath); 
[[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil]; 
file = [[NSFileHandle fileHandleForUpdatingAtPath:filePath] retain]; 
[file seekToEndOfFile]; 

경우 파일이 NSFileHandle 클래스의 객체이다. 데이터를 수신 나중에 동안 didReceiveData이 때마다, (을 NSData *) 데이터 메서드를 호출, 내가 파일에 이런 식으로 수신 된 데이터를 저장 :

[file seekToEndOfFile]; 
[file writeData:data]; 

마지막으로 나는 connectionDidFinishLoading에서 파일을 닫습니다 방법을이 방법 :

[file closeFile]; 

시스템에서 빌드하고 실행할 때 작동했습니다. 하지만 다른 시스템에 복사하고 나는이 오류 얻을 구축하려고 할 때 :

Terminating app due to uncaught exception `'NSFileHandleOperationException'`, reason: '*** `-[NSConcreteFileHandle seekToEndOfFile]: No such file or directory'` 

내가 NSSearchPathForDirectoriesInDomain 기능에 대해 알고에 대한 http://www.techotopia.com/index.php/Working_with_Directories_on_iPhone_OSWhat is NSSearchPathForDirectoriesInDomains?을 대해 참조를하지만 난 여전히 명확하지 않다.

UserDomainMask은 프로젝트가있는 시스템 및 사용자에 따라 적절한 경로를 반환합니다. 그렇다면 왜 그런 오류가 발생합니까?

그들은 경로가 반환 말 (파일 경로에 저장)입니다

현재에 로그인 한 사용자의 이름입니다 경로/사용자 // 라이브러리/응용 프로그램 지원/아이폰 시뮬레이터/사용자/응용 프로그램 // 문서 시뮬레이터가 실행되고 있으며 앱의 고유 ID 인 Mac OS X 시스템

아무도 내가 왜 그러한 오류가 발생하는지 이해할 수 있습니다.

+0

코드를 표시하십시오 ... –

+0

질문을 변경하고 NSSearchFilePathInDirectoriesForDomain 함수가 사용되는 코드를 몇 개 추가했습니다. – aparna

답변

7

귀하의 요구 사항에 예외 코드 가 표시되어 있으므로 우리는이 글쓰기 및 읽기를위한 경로를 가지고 있습니다. 당신이 사용하는 것을 공유합니까?

문서

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

도서관

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 
NSString *libraryDirectory = [paths objectAtIndex:0]; 

캐시 디렉토리

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
NSString *cachePath = [paths objectAtIndex:0]; 
BOOL isDir = NO; 
NSError *error; 
if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir == NO) { 
    [[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error]; 
} 

읽기보다이 Answer

+0

사용 방법을 이해했습니다. 설명을위한 코드가 거의 포함되지 않도록 질문을 변경했습니다. 내 의심의 여지가 돌아왔다. – aparna

+0

@aparna 너무 명확하지 않다 내 코드 라인을 깨끗하게 정리 한 코드를 시험해보고 나서 – Buntylm

+0

k를 테스트해라. 나는 코드를 바꿀 것이고 그것이 작동하면 알려 줄 것이다. 감사. – aparna

0
를 참조하면 해너을 사용할 수 있습니다 wrting
+0

sqlite3 * 세부 정보를 사용하는 동안이 함수를 호출하여 파일 경로를 가져올 수 있습니다. int result = sqlite3_open ([[self filePath] UTF8String], & details); if (result! = SQLITE_OK) –