Вы не путаете? Пишут, что есть «rwxr-xr-x», но не «
-rwxr-xr-x». То есть группа «rwx» — «владелец», группа «r-x» — «группа» и группа «r-x» — «остальные».
Цитата blackeangel:
есть -rwxr-xr-x, которому соответствует 755.
Получается надо читать посимвольно со второго знака куда то, при этом сравнивая с этими условиями и писать куда-то как числа, переводя строки в числа, потом складывать и снова писать в текст? »
|
Читать надо регуляркой, разбивая на группы по три символа и одновременно проверяя на допустимость символов, например:
Код:
([r\-][w\-][x\-])([r\-][w\-][x\-])([r\-][w\-][x\-])
Затем каждую группу из найденного соответствия переводите в двоичный вид по принципу:
- на позиции 2 символ «-» — значит это будет «0», иначе — «1»;
- на позиции 1 символ «-» — значит это будет «0», иначе — «1»;
- на позиции 0 символ «-» — значит это будет «0», иначе — «1».
Для указанного выражения получаем для групп:
- двоичное 111, т.е. 1·2² + 1·2¹ + 1·2° = 4 + 2 + 1 = 7;
- двоичное 101, т.е. 1·2² + 0·2¹ + 1·2° = 4 + 0 + 1 = 5;
- двоичное 101, т.е. 1·2² + 0·2¹ + 1·2° = 4 + 0 + 1 = 5.
Обратное преобразование будет куда проще.
Как это лучше всего будет оформить-реализовать в Java, я Вам, разумеется, не подскажу.