Czy istnieje sposób na uzyskanie ludzkiego czytelnego ciągu (np. "Drwxr-xr-x" na przykład) z liczby całkowitej NSFilePosixPermissions?Object-c NSFilePosixPermissions do czytelnego dla człowieka NSString
Odpowiedz
Atrybut uprawnień systemu plików jest po prostu długością bez znaku. Poniższy kod może być oczywiście bardziej wydajny, ale pokazuje [mniej więcej], co należy zrobić, aby uzyskać żądany ciąg znaków:
// The indices of the items in the permsArray correspond to the POSIX
// permissions. Essentially each bit of the POSIX permissions represents
// a read, write, or execute bit.
NSArray *permsArray = [NSArray arrayWithObjects:@"---", @"--x", @"-w-", @"-wx", @"r--", @"r-x", @"rw-", @"rwx", nil];
NSFileManager *fm = [[[NSFileManager alloc] init] autorelease];
NSMutableString *result = [NSMutableString string];
NSDictionary *attrs = [fm attributesOfItemAtPath:@"some/path.txt" error:NULL];
if (!attrs)
return nil;
NSUInteger perms = [attrs filePosixPermissions];
if ([[attrs fileType] isEqualToString:NSFileTypeDirectory])
[result appendString:@"d"];
else
[result appendString:@"-"];
// loop through POSIX permissions, starting at user, then group, then other.
for (int i = 2; i >= 0; i--)
{
// this creates an index from 0 to 7
unsigned long thisPart = (perms >> (i * 3)) & 0x7;
// we look up this index in our permissions array and append it.
[result appendString:[permsArray objectAtIndex:thisPart]];
}
return result;
Dobrze myślę, że można utworzyć tablicę tak:
NSArray *convertToAlpha = [NSArray arrayWithObjects:@"---",@"--x",@"-w-",@"--wx",@"r--",@"r-x",@"rw-",@"rwx", nil];
Następnie po tranlating z NSFilePosixPermissions do ósemkowej, podzielić uzyskaną liczbę na jej cyfr componenet i używać convertToAlpha mapować każdą cyfrę do jej reprezentacji alfanumerycznej. ...
xm ... Spróbuję tego. Wrócę, jeśli to zrobię, aby opublikować całe rozwiązanie. Dziękuję Ci! – Vassilis
@VassilisGr, @ennuikiller: uważaj jednak, potrzebujesz symbolu @ za każdym łańcuchem, a także musisz dodać 'nil' do swojej listy argumentów. – dreamlax
@dreamlax, dzięki za poprawki! – ennuikiller
- 1. Cron do czytelnego dla człowieka ciągu
- 2. Wyjście htop do pliku czytelnego dla człowieka
- 3. Konwertowanie pliku llvm .bc do pliku czytelnego dla człowieka .ll
- 4. Jak uzyskać numer identyfikacyjny od czytelnego dla człowieka opisu?
- 5. Formatować datę względną do formatu czytelnego dla człowieka w systemie Android przy użyciu Androida DateUtils API
- 6. Opis initWithBytes dla NSString
- 7. NSString isEqualToString: dla \ n
- 8. Reprezentacje czytelne dla człowieka w protobuf-net
- 9. PLCrashReporter: Tworzenie czytelnej dla człowieka ścieżki stosu
- 10. Serialize w czytelnym dla człowieka formacie tekstowym
- 11. kody błędów doładowania czytelny dla człowieka opis
- 12. Konwertuj mikrosekundy na czas czytelny dla człowieka
- 13. Jak dołączyć NSString do innego NSString
- 14. Formatowanie daty na czytelny dla człowieka format
- 15. Jak wyświetlić czytelne dla człowieka "czas temu"
- 16. Znajdowanie plików czytelnych dla człowieka na unixie
- 17. Czy mogę przetłumaczyć ślad stosu ze zminimalizowanego kodu do czytelnego dla ludzi stosu stosów przy użyciu sourcemaps?
- 18. NSURLRequest do NSString
- 19. Konwersja NSDecimalNumber do NSString
- 20. NSString do NSURL?
- 21. NSString do równania
- 22. Konwersja NSData do NSString!
- 23. Dodawanie wielokropka do NSString
- 24. Skróć NSString do szerokości
- 25. NSString (hex) do bajtów
- 26. NSString do bibliotece NSURL
- 27. Konwertowanie człowieka na 3d
- 28. Szyny: Przyjazny dla człowieka format daty dla pola tekstowego
- 29. Przesyłanie obiektu NSObject do NSString
- 30. iPhone SDK NSString do NSDate
Nie. Całkowicie niemożliwe bez talizmanu Unicorn i całego trunku. (Zobacz Bitwise Operations: http://en.wikipedia.org/wiki/Bitwise_operation) –
(Wcześniej zagłosowano na pytanie, ponieważ jest dobre i jestem smart-a **.) :-) –
Dzięki Joshua ! zaakceptowana odpowiedź wydaje się być w porządku! – Vassilis