2014-02-18 4 views
2

Я написал эту программу, но не смог получить результат, каждый раз, когда я запускаю эту программу, я получаю только 1-й оператор 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; 
} 

Пожалуйста, помогите мне решить эту проблему. Благодаря код

+0

IOS или OSX, файловые системы имеют разные правила о чувствительности к регистру. Вместо того, чтобы передавать «NULL» в качестве параметра ошибки, передайте указатель на «NSError», а при ошибке «NSLog» - ошибка, это послужит причиной сбоя. – zaph

+0

Его отказ не показан, а только 1-й отчет NSlog вышел как вывод –

+0

Да, см. Мой ответ. В общем, это плохая идея игнорировать результаты. – zaph

ответ

0

OP:

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

вернется если NSLog принтами, так что не будет никакого дальнейшего выполнения в программе.

Извлеките заявление return 1;.

Предполагается, что «я получаю только одно заявление NSN». означает утверждение: 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; 
} 
+0

ok, сэр, позвольте мне попробовать. –

+0

Сэр, теперь выполняется вторая инструкция NSLog, когда я удаляю второй оператор возврата; У меня есть файлы по заданному пути, чем почему бы не его выполнение, перемещение, перемещение и другие операции –

+0

лучше положить if-else, чтобы вы могли понять, что происходит, и NSlog ошибок –

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