0

我的应用程序中有以下代码(如下),它只是尝试使用 NSTask 来触摸一个带有目录时间/日期戳的文件。它在一个始终只访问一个目录的应用程序中工作得很好,但是,它不适用于另一个经常更改目录以访问其中一些数据的应用程序。当我检查 currentfile 和 currentpath 时,它们都显示正确的路径。我已经用尽了所有我能想到的可能性;任何帮助将不胜感激-谢谢。

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

1 回答 1

1

您可以更改文件的修改时间,而无需使用NSTask. -[NSURL setResourceValue:forKey:error:]与键一起使用NSURLContentModificationDateKey

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

于 2012-06-13T11:42:54.757 回答