Как проверить, есть ли в 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;
}
Другие вопросы по тегам