2013-05-15 31 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]; 

其中File是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'` 

我refered http://www.techotopia.com/index.php/Working_with_Directories_on_iPhone_OSWhat is NSSearchPathForDirectoriesInDomains?爲寂寂NSSearchPathForDirectoriesInDomain功能,但我仍然不明朗。

UserDomainMask根據系統和項目所在的用戶返回正確的路徑。如果是這樣,爲什麼我得到這樣的錯誤?

他們說的路徑返回(存儲在文件路徑)將路徑/用戶//資源庫/應用程序支持/ iPhone模擬器/用戶/應用//文檔其中

是用戶的當前登錄名運行模擬器的Mac OS X系統,並且是應用程序的唯一ID

任何人都可以幫助我,理解爲什麼我會收到此類錯誤。

+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]; 
} 

對於閱讀和wrting可以使用path.And更多的看到這個Answer

+0

我明白如何使用它。我已經改變了我的問題,以包含一些解釋代碼。我懷疑是在返回的路上。 – aparna

+0

@aparna不太清楚請嘗試我的代碼行乾淨的代碼,然後測試 – Buntylm

+0

k我會改變代碼,我會讓你知道它是否工作。謝謝。 – aparna

0
-(NSString *) filePath 
{ 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(

                 NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentsDir = [paths objectAtIndex:0]; 
    NSLog(@"documentsDir %@",documentsDir); 

    return [documentsDir stringByAppendingPathComponent:@"xxxxx.sql"]; 
} 
+0

您可以在使用sqlite3 *細節時調用此函數來獲取文件路徑; int result = sqlite3_open([[self filePath] UTF8String],&details); if(result!= SQLITE_OK) –

相關問題