2011-08-29 34 views
10

我似乎無法將nsdata寫入文件。任何想法我可能做錯了。提前致謝。NSData writeToFile不能正常工作

NSString* filename = @"myfile.txt"; 

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

NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:filename];  

if ([fileManager fileExistsAtPath:applicationDocumentsDir]) 
    NSLog(@"applicationDocumentsDir exists"); // verifies directory exist 

NSData *data = [NSData dataWithContentsOfURL:URL]; 

if (data) {  
    NSString *content = [[NSString alloc] initWithBytes:[data bytes] 
                 length:[data length] encoding: NSUTF8StringEncoding]; 

    NSLog(@"%@", content); // verifies data was downloaded correctly 

    NSError* error; 
    [data writeToFile:storePath options:NSDataWritingAtomic error:&error]; 

    if(error != nil) 
     NSLog(@"write error %@", error); 
} 

我不斷收到錯誤

"The operation couldn’t be completed. No such file or directory" 
+6

你不應該檢查是否error''是零或不 - 它可能被初始化爲任何東西(在你的情況下)。檢查'writeToFile:options:error'的結果以確定成功或失敗。如果它返回錯誤(NO),那麼只有當你讀錯誤。 –

+0

感謝您的回覆。它返回NO。我刪除了支票以儘可能縮短帖子。 – user346443

+0

調用writeToFile之前,您的storePath變量的值是什麼:options:error:?你的代碼看起來不錯,但是你得到的錯誤讓我懷疑這條路徑指向哪裏。 – Sam

回答

5

嘗試

NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:@"myfile.txt"]; 

而且

if ([[NSFileManager defaultManager] fileExistsAtPath:storePath]) 
     NSLog(@"applicationDocumentsDir exists"); 
+1

所以,工作,很奇怪。一個字符串與nsstring變量有什麼不同? – user346443

+0

如果您打印出來並且有文件:開頭是一個URL。我剛剛遇到了這個,儘管我堅持使用字符串函數。 –

+0

fileExistsAtPath返回false。該怎麼辦?因爲它不存在原因文件尚未創建。如何創建它? – NikeAlive