2010-03-29 120 views

回答

4

我不認爲有一個內置的方法來做到這一點,但它不應該是很難做這樣的事情:

NSString *path = @"/The/root/directory"; 
NSDictionary *attributes; // Assume that this is already setup 


NSFileManager *fileManager = [[[NSFileManager alloc] init] autorelease]; 
NSArray *subPaths = [fileManager subpathsAtPath:path]; 
for (NSString *aPath in subPaths) { 
    BOOL isDirectory; 
    [fileManager fileExistsAtPath:aPath isDirectory:&isDirectory]; 
    if (isDirectory) { 
     // Change the permissions on the directory here 
     NSError *error = nil; 
     [fileManager setAttributes:attributes ofItemAtPath:aPath error:error]; 
     if (error) { 
      // Handle the error 
     } 
    } 
} 

這是未經測試,但應該給你一個起點。

2
NSString *path = @"/User/user/aPath"; 
NSFileManager *manager = [[[NSFileManager alloc] init] autorelease]; 
if ([manager fileExistsAtPath: path]) { 
    NSDictionary *attrib = [NSDictionary dictionaryWithObjectsAndKeys: 
          [NSNumber numberWithInt:0], NSFileGroupOwnerAccountID, 
          [NSNumber numberWithInt:0], NSFileOwnerAccountID, 
          @"root", NSFileGroupOwnerAccountName, 
          @"root", NSFileOwnerAccountName, nil ]; 
    NSError *error = nil; 
    [manager setAttributes:attrib ofItemAtPath:path error:&error]; 
    NSDirectoryEnumerator *dirEnum = [manager enumeratorAtPath: path]; 
    NSString *file; 
    while (file = [dirEnum nextObject]) { 
    [manager setAttributes:attrib ofItemAtPath:[path stringByAppendingPathComponent:file] error:&error]; 
    } 
}