如何检查 TarArchiveEntry 是否设置了 3 个执行位中的任何一个?

Axe*_*ine 1 java bit-manipulation apache-commons-compress

在 commons-compress TarArchiveEntry 中,可以使用 getMode() 请求模式,但是这会返回一个 int。

检查是否设置了任何执行位(用户、组、每个人)的最佳方法是什么?

har*_*old 5

它可以一次性完成,一次检查所有三个位:

static boolean isExecutable(int mode) {
    return (mode & 0111) != 0;
}
Run Code Online (Sandbox Code Playgroud)

哪里0111是八进制文字,这是非常罕见的,因此作为一个更清晰但更长的替代方案:

static boolean isExecutable(int mode) {
    int mask = 1 | (1 << 3) | (1 << 6);
    return (mode & mask) != 0;
}
Run Code Online (Sandbox Code Playgroud)