来自stdin的文件名,用于NSFileManager objective-c

时间:2015-05-18 20:45:11

标签: objective-c gnustep

我正在努力教导自己(痛苦地)如何在objective-c中执行文件I / O.以下代码旨在让用户从stdin输入文件名,然后使用该名称创建NSFileManager。如果我将文件名硬编码为NSString(在注释代码@“barney.txt”中显示),代码就可以工作。但是,如果我使用与stdin相同的文件名,似乎没有任何事情发生。程序将NS注销名称但是,文件管理器上没有骰子。

我需要帮助。

谢谢, 马克·艾琳

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;
}

1 个答案:

答案 0 :(得分:0)

使用stdin在字符串的末尾加上'\ n'。这搞砸了搜索。如果删除换行符,则代码将按预期运行。