Objective-C,NSTask不会触及文件

时间:2012-06-13 11:03:53

标签: objective-c nsfilemanager nstask

我的应用程序中有以下代码(下面),它只是尝试使用NSTask触摸一个带有目录时间/日期戳的文件。它在一个只能一次访问一个目录的应用程序中工作正常,但是,它不会与另一个频繁更改目录以访问其中一些数据的应用程序。当我检查当前文件和当前路径时,它们都显示正确的路径。我已经过了我能想到的每一种可能性;任何帮助都将非常感谢 - 谢谢。

- (void)someMethod:(NSString *)currentfile {

    NSFileManager *filemanager = [[NSFileManager alloc] init];

    if ([filemanager changeCurrentDirectoryPath: @"/"] == NO)
    NSLog (@"Cannot change directory.\n");

    NSString *currentpath = [filemanager currentDirectoryPath];
    NSLog (@"Current directory is %@", currentpath);

    [filemanager release];

    NSArray*arguments = [NSArray arrayWithObjects:@"-r",currentpath,currentfile,nil];

    [self touchFiles:arguments];

    return;
}

- (void)touchFiles:(NSArray *)arguments {

    NSTask *task = [[NSTask alloc] init];

    [task setLaunchPath:@"/usr/bin/touch"];

    [task setArguments:arguments];

    [task launch];

    [task release];

    return;
}

1 个答案:

答案 0 :(得分:1)

您可以在不使用NSTask的情况下更改文件的修改时间。将-[NSURL setResourceValue:forKey:error:]与密钥NSURLContentModificationDateKey一起使用。

至于您使用NSTasktouch失败的原因,也许您没有权限修改文件的修改时间。检查控制台日志以查看是否从touch报告了任何错误,或者将任务的标准错误输出重定向到其他地方并检查。