2010-08-12 3 views
4

Я использую:Objective 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

+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

1

Это тильды в пути заставляет меня думать, что ваш путь к файлу может быть не получать обработаны должным образом. Взгляните на метод NSString -stringByExpandingTildeInPath, чтобы расширить путь к полному, абсолютному пути.

Например: NSData *output1 = [NSData dataWithContentsOfFile:[@"~/centralUtilOut.tmp" stringByExpandingTildeInPath]];

Смежные вопросы