[英]Writing file with NSFileManager in iOS
(我不是英語母語人士。抱歉我的英語不好...)
我使用此代碼成功寫入了文件。
// worked code...
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingString:@"myfile.txt"];
NSString *myStr = @"this is a string";
if( ! [myStr writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:NULL] )
return FALSE;
else
return TRUE;
現在,我想使用NSFileManager
更改此代碼。 所以,我嘗試了這樣。
// not worked code...
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingString:@"myfile.txt"];
NSString *myStr = @"this is a string";
NSData *fileData = [myStr dataUsingEncoding: NSUTF8StringEncoding];
NSFileManager *fm;
if( [fm createFileAtPath: filePath contents: fileData attributes: nil] == NO )
return FALSE;
else
return TRUE;
每當我構建此代碼時,它都會一直返回為false ...我做錯了嗎? 請幫我
區別基本上是NSFileManager
方法不會覆蓋現有文件,因為NSString
方法將 :
從NSFileManager
參考 :
返回值
YES
如果操作成功,或者如果該項目已經存在,否則NO
。
從NSString
參考 :
討論區
此方法將覆蓋路徑上的所有現有文件。
如果您始終要寫入數據的新副本,請先檢查文件是否存在,然后刪除該文件。
還 :您不應該使用[NSString stringByAppendingString:]
構造文件路徑; 而是使用[NSString stringByAppendingPathComponent:]
; 因此,我希望您甚至都不會寫出您認為是的文件。
更好的是,使用NSURL
來引用文件; 這是首選方法。
您的NSFileManager尚未設置為任何文件管理器。
相反,您應該嘗試使用帶有以下代碼的defaultManager對其進行初始化。
NSFileManager *fm = [NSFileManager defaultManager];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.