我的应用程序中有以下代码(下面),它只是尝试使用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;
}
答案 0 :(得分:1)
您可以在不使用NSTask
的情况下更改文件的修改时间。将-[NSURL setResourceValue:forKey:error:]
与密钥NSURLContentModificationDateKey
一起使用。
至于您使用NSTask
和touch
失败的原因,也许您没有权限修改文件的修改时间。检查控制台日志以查看是否从touch
报告了任何错误,或者将任务的标准错误输出重定向到其他地方并检查。