Ich verwende derzeit NSFileManager setAttributes, um die Berechtigung eines Verzeichnisses zu ändern. Mein Problem ist, dass es das anscheinend nicht rekursiv macht. Gibt es eine Möglichkeit, dies zu erzwingen?So ändern Sie die Berechtigung eines Verzeichnisses rekursiv mit NSFileManager setAttributes
5
A
Antwort
4
Ich glaube nicht, gibt es eine integrierte Methode, dies zu tun, aber es sollte so etwas wie nicht schwer zu tun:
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
}
}
}
Dies ist nicht getestet, aber sollten Sie einen Ausgangspunkt geben.
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];
}
}
Verwandte Themen
- 1. NSFileManager Inhalt des Verzeichnisses löschen
- 2. Cocoa Sandbox: So erhalten Sie die Berechtigung zum Schreiben mehrerer Dateien oder eines Verzeichnisses mit NSSavePanel
- 3. Ändern des aktuellen Verzeichnisses eines FileSystemObject
- 4. So ändern Sie die Helligkeit eines Bildes
- 5. So ändern Sie die Textfarbe eines Spinner
- 6. So ändern Sie die Größe eines Bildhintergrunds
- 7. So ändern Sie die Größe eines Popover
- 8. So entfernen Sie ein Verzeichnis und seinen Inhalt mit NSFileManager
- 9. So benennen Sie eine Datei mit NSFileManager um
- 10. So ändern Sie die Standardberechtigungen in Androidmanifest.xml
- 11. Einfügen eines Verzeichnisses mit Pyinstaller
- 12. So ändern Sie die Berechtigung des Ordners nicht lesen/schreiben in Python
- 13. So ändern Sie die Dateierweiterung mit jquery
- 14. So ändern Sie die Position mit CSS
- 15. Kann ich die MD5sum eines Verzeichnisses mit Perl bekommen?
- 16. Rename Teil eines Verzeichnisses
- 17. Finden Sie den Inhalt eines Verzeichnisses
- 18. So ändern Sie die Bildachsenbeschriftungen
- 19. Ändern Sie die Codierung von Dateien rekursiv unter Windows?
- 20. So erhalten Sie die genaue Größe des Cache-Verzeichnisses: Android
- 21. So ändern Sie die Position eines sich bewegenden Körpers - Box2D
- 22. So ändern Sie die Geräteausrichtung
- 23. Erlangung der Berechtigungen zum Erstellen eines neuen Ordners mit NSFileManager
- 24. So ändern Sie dynamisch die Rowsource eines Zugriffsdiagramms
- 25. So ändern Sie die Breite der Zeile eines UITableView
- 26. Kürzen eines Verzeichnisses mit JavaFX-Medien
- 27. Python-Beizen nach dem Ändern des Verzeichnisses eines Moduls
- 28. Entfernen eines Verzeichnisses mit Dateien in AppData
- 29. So ändern Sie die funktionale Einfügung-Sortiercode, um tail rekursiv zu sein
- 30. So wenden Sie die Berechtigung auf Benutzerebene in opencart an