我正在努力教导自己(痛苦地)如何在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;
}
答案 0 :(得分:0)
使用stdin在字符串的末尾加上'\ n'。这搞砸了搜索。如果删除换行符,则代码将按预期运行。