Как проверить, есть ли в TarArchiveEntry какой-либо из 3 установленных битов выполнения?
В обычном сжатии TarArchiveEntry можно запросить режим с помощью getMode(), однако это возвращает int.
Каков наилучший способ проверить, установлен ли какой-либо из битов выполнения (пользователь, группа, каждый)?
1 ответ
Решение
Это можно сделать за один раз, проверяя все три бита одновременно:
static boolean isExecutable(int mode) {
return (mode & 0111) != 0;
}
куда 0111
является восьмеричным литералом, который встречается крайне редко, поэтому в качестве альтернативы он яснее, но длиннее:
static boolean isExecutable(int mode) {
int mask = 1 | (1 << 3) | (1 << 6);
return (mode & mask) != 0;
}