2015-05-18 4 views
-2

Я пытаюсь научить себя (больно), как делать ввод-вывод файлов в объективе-c. Следующий код предназначен для того, чтобы пользователь мог ввести имя файла из stdin, а затем создать NSFileManager, используя это имя. Код работает, если я жестко запрограммировал имя файла как NSString (показано в комментированном коде @ "barney.txt". Однако ничего не происходит, если я использую то же имя файла с stdin. Программа NSLog выдает имя файла. Но, не кости на FileManager.имя файла из stdin для NSFileManager object-c

мне нужна помощь.

Спасибо, Марк Allyn

enter code here 

#import <Foundation/Foundation.h> 


int main (int argc, char ** argv) 
{ 
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

//NSString * fName = @"barney.txt"; 
NSFileManager * fm; 
//NSDictionary *attr; 

NSFileHandle *input = [NSFileHandle fileHandleWithStandardInput]; 
NSLog(@"Created file handle..."); 
NSLog(@"Enter File Name"); 
NSData *inputData = [input availableData]; 
NSLog(@"Created NSData object"); 
NSString *fName = [[NSString alloc] initWithData:inputData    encoding:NSUTF8StringEncoding]; 
NSLog(@"Created NSString object"); 
NSLog(@"You entered %@ as the name\n", fName); 
fm = [[NSFileManager alloc] init ]; //defaultManager 

if (fm == nil) 
{ 
NSLog(@"Failed to create file manager object\n"); 

      } 
if ([fm fileExistsAtPath:fName] == YES){ 
NSLog(@"File Exists!"); 
NSLog(@"%p", fm); 
} else 
    { 
NSLog(@"File Appears not to exist"); 

} 
[fm release]; 
[pool drain]; 
return 0; 
} 
+0

В чем проблема? Какие журналы вы видите? – rmaddy

+0

BTW - если вы играете с кодом уровня командной строки и имеете дело с 'stdin', почему вы используете iOS и не делаете это на Mac в качестве приложения OS X? – rmaddy

+0

Фактическая проблема заключается в том, что программа печатает «Файл кажется, что он не существует». –

ответ

0

Использование STDIN ставит '\ п' в конце строки Это уничтожает поиск. Если вы удалите символы новой строки, код будет работать, как ожидалось.