2010-08-12 23 views
4

閱讀我使用:目標C:的NSString的NSData從文件的問題

NSData *output1 = [NSData dataWithContentsOfFile:@"~/centralUtilOut.tmp"]; 
NSString *output = [[NSString alloc]initWithData:output1 encoding:NSUTF8StringEncoding]; 

NSLog(@"%@", output); 
[output release]; 

但沒有什麼是在調試窗口。

這是客觀C.

注:centralUtilOut.tmp是一個普通的文本文件

回答

16

的問題是在路徑規格。

看來,NSData -dataWithContentsOfFile:不擴大~

它的工作原理,當你使用完整的路徑或路徑展開波浪:

NSData *output1 = [NSData dataWithContentsOfFile: 
         [@"~/centralUtilOut.tmp" stringByExpandingTildeInPath]]; 
NSString *output = [[NSString alloc]initWithData:output1 
             encoding:NSUTF8StringEncoding]; 

NSLog(@"%@", output); 
[output release]; 
+0

那麼我怎麼才能使用完整的家目錄路徑〜? – Daniel 2010-08-12 03:41:08

+1

使用'stringByExpandingTildeInPath'嘗試,請參閱文檔http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/stringByExpandingTildeInPath – stefanB 2010-08-12 03:44:39

1

那波浪路徑讓我覺得你的文件路徑可能不會得到正確的處理。看看NSString的-stringByExpandingTildeInPath方法,將路徑擴展到完整的絕對路徑。

例如: NSData *output1 = [NSData dataWithContentsOfFile:[@"~/centralUtilOut.tmp" stringByExpandingTildeInPath]];