0

私のアプリには次のコード(以下)があります。これは、NSTaskを使用して、ディレクトリの時刻/日付スタンプが付いた1つのファイルにアクセスしようとするだけです。常に1つのディレクトリにしかアクセスしないアプリでは問題なく機能しますが、一部のデータにアクセスするためにディレクトリを頻繁に変更する別のアプリでは機能しません。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

NSTaskとの使用が失敗する理由についてtouchは、ファイルの変更時刻を変更する権限がない可能性があります。コンソールログをチェックして、タスクの標準エラー出力からエラーが報告されたtouchかどうかを確認するか、タスクの標準エラー出力を別の場所にリダイレクトして確認します。

于 2012-06-13T11:42:54.757 に答える