对文件的一些操作

时间:2014-02-18 12:30:40

标签: objective-c

我编写了这个程序,但无法获得输出,每次运行此程序时,我都会得到唯一的NSlog语句。我创建了我在此路径和内容的文件。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool
    {
        NSString *fName = @"/Users/sahil/Documents/newfile/commands";
        NSFileManager * fm;
        NSDictionary *attr;
        fm=[NSFileManager defaultManager];

        if ([fm fileExistsAtPath: fName]== NO)
        {
            NSLog(@"file not exist");
            return 1;
        }
        if ([fm copyItemAtPath:fName toPath:@"newfile1" error:NULL] == NULL)
        {
            NSLog(@"file copy failed");
            return 2;
        }
        if ([fm contentsEqualAtPath:fName andPath:@"newfile1"]==NO)
        {
            NSLog(@"files are not =");
            return 3;
        }
        if ([fm moveItemAtPath:@"newfile1" toPath:@"newfile2" error:NULL]== NULL)
        {
            NSLog(@"file rename fail");
            return 4;
        }
        if ((attr=[fm attributesOfItemAtPath:@"newfile2" error:NULL])==nil)
        {
            NSLog(@"couldnt get file attributes");
            return 5;
        }
        NSLog(@"file size is %llu bytes",[[attr objectForKey:NSFileSize] unsignedLongLongValue]);
        if ([fm removeItemAtPath:fName error:NULL] == NULL)
        {
            NSLog(@"file removal failed");
            return 6;
        }
        NSLog(@"all ops were successful");
        NSLog(@"%@",[NSString stringWithContentsOfFile:@"newfile2" encoding:NSUTF8StringEncoding error:NULL]);
    }
    return 0;
}

请帮我解决这个问题。 感谢

1 个答案:

答案 0 :(得分:0)

OP代码:

if ([fm fileExistsAtPath: fName]== NO)
{
    NSLog(@"file not exist");
    return 1;
}
如果NSLog打印,

将返回,因此程序中将不再执行。

删除return 1;声明。

这假设“我得到了唯一的第一个NSlog声明。”表示声明:NSLog(@"file not exist");执行。

OP代码:

if ([fm copyItemAtPath:fName toPath:@"newfile1" error:NULL] == NULL)
{
    NSLog(@"file copy failed");
    return 2;
}

添加错误记录:

NSError *error;
if ([fm copyItemAtPath:fName toPath:@"newfile1" error:&error] == NULL)
{
    NSLog(@"file copy failed, error: %@", error);
    return 2;
}