Как определить константы разрешений 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;

Но это может быть чрезмерным:)

Другие вопросы по тегам