Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Написать калькулятор прав chmod

Ответить
Настройки темы
Java - Написать калькулятор прав chmod

Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Собственно у меня только один вопрос:
Как считать текст?
То есть мы имеем
r=4
w=2
x=1
А вот есть -rwxr-xr-x, которому соответствует 755.
Получается надо читать посимвольно со второго знака куда то, при этом сравнивая с этими условиями и писать куда-то как числа, переводя строки в числа, потом складывать и снова писать в текст?

Отправлено: 22:27, 14-06-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата blackeangel:
А вот есть -rwxr-xr-x »
Вы не путаете? Пишут, что есть «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, я Вам, разумеется, не подскажу.

Отправлено: 23:11, 14-06-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Iska:
Вы не путаете? Пишут, что есть «rwxr-xr-x», но не «-rwxr-xr-x». То есть группа «rwx» — «владелец», группа «r-x» — «группа» и группа «r-x» — «остальные». »
Нет, не путаю. Первый символ может быть:
d - для папок;
l - для ссылок.
То есть для папки с разрешениями 755 это будет выглядеть следующим образом: drwxr-xr-x.

регулярка это мысль.
Но думаю разбить на 3 группы: с 2го по 4й символ, с 5 по 7 символ, с 8 по 10 символ через substring и закинуть в один цикл хождения по символам сразу трех групп.

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 23:23, 14-06-2017 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата blackeangel:
Нет, не путаю. Первый символ может быть: »
Тогда поправьте шаблон регулярки в правильном направлении.

Цитата blackeangel:
Но думаю разбить на 3 группы: с 2го по 4й символ, с 5 по 7 символ, с 8 по 10 символ через substring и закинуть в один цикл хождения по символам сразу трех групп. »
Регуляркой будет а) проще и б) Вы сразу, ей же, сделаете проверку на допустимые символы.

Отправлено: 23:46, 14-06-2017 | #4


Аватара для shisik

Ветеран


Сообщения: 3246
Благодарности: 595

Профиль | Отправить PM | Цитировать


Цитата blackeangel:
Но думаю разбить на 3 группы: с 2го по 4й символ, с 5 по 7 символ, с 8 по 10 символ через substring и закинуть в один цикл хождения по символам сразу трех групп. »
Регэксп это уже сделает за вас. По крайней мере на 3 группы разбивает.

Цитата blackeangel:
Нет, не путаю. Первый символ может быть:
d - для папок;
l - для ссылок. »
Ну так добавьте ещё ([bcdlps-]) в начало - будет вам флаг типа.

Отправлено: 23:48, 14-06-2017 | #5


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Iska, думаю как то так:
Код: Выделить весь код
^.*([r\\-][w\\-][x\\-])([r\\-][w\\-][x\\-])([r\\-][w\\-][x\\-])$
(Регулярки на java и vb очень похожи)

Отправлено: 23:51, 14-06-2017 | #6


Аватара для shisik

Ветеран


Сообщения: 3246
Благодарности: 595

Профиль | Отправить PM | Цитировать


Цитата blackeangel:
.* »
Не думаю, что эт охорошая мысль. Допустимые символы там тоже строго регламентированы, так что лучше ([bcdlps-]). Ну или [bcdlps-] если флаг не нужен.

Отправлено: 23:53, 14-06-2017 | #7


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


shisik, есть уже готовое решение на другом форуме.
Код: Выделить весь код
private static String getDigits(String s) {
        if (!s.matches(".*([r-][w-][x-]){3}$")) {
            throw new IllegalArgumentException("Achtung!");
        }
        Function<String, String> rwxMapper = rwx -> String.valueOf(Integer.parseInt(rwx.replaceAll("[rwx]", "1").replaceAll("-", "0"), 2));
        return Arrays.stream(s.substring(s.length() - 9).split("(?<=\\G...)")).map(rwxMapper).collect(joining());
    }
Но всегда должно быть альтернативное решение.
И, очень важно, понять что же там происходит.

Отправлено: 00:09, 15-06-2017 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Написать калькулятор прав chmod

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - калькулятор Avatar2014 Программирование и базы данных 4 17-03-2014 15:15
C/C++ - Калькулятор hhh8486 Программирование и базы данных 5 11-04-2011 01:18
Ипотечный калькулятор 1.0 OSZone Software Новости программного обеспечения 0 24-09-2010 21:30
Java - Помогите написать типографический калькулятор AsD05 Программирование и базы данных 0 11-06-2010 04:39
Samba - chmod question Аlchemist Программное обеспечение Linux и FreeBSD 2 25-02-2009 22:19




 
Переход