Как определить константы разрешений Unix (READ, WRITE, EXECUTE)
Я хочу определить эти константы и | их для различных операций, чтобы генерировать правильные разрешения.
Определяя их как:
public static final int READ = 4;
public static final int WRITE = 2;
public static final int EXECUTE = 1;
дает мне правильный результат, как и ожидалось, как READ | НАПИСАТЬ | ВЫПОЛНИТЬ или ЗАПИСАТЬ | ВЫПОЛНИТЬ.
Определяет их как
public static final int READ = 0x4;
public static final int WRITE = 0x2;
public static final int EXECUTE = 0x1;
дать мне какую-то выгоду?
1 ответ
Решение
Поскольку они эквивалентны в шестнадцатеричном или десятичном виде, это только добавляет с точки зрения читаемости для других разработчиков. Это функционально то же самое.
Хотя, если вы делаете это для удобства чтения, восьмеричное было бы еще лучше, учитывая базовую систему:
public static final int READ = 04;
public static final int WRITE = 02;
public static final int EXECUTE = 01;
или даже более очевидно:
public static final int READ = 1<<2;
public static final int WRITE = 1<<1;
public static final int EXECUTE = 1;
Но это может быть чрезмерным:)