在Linux中对文件权限进行更新,直接使用Runtime.getRuntime().exec("chmod ...")没有效果,没有找到具体的原因,通过以下两种方式实现(可能有更优雅的方式,有的话会后期补充):
private static int chmod(String filename, int mode) {
try {
Class<?> fspClass = Class.forName("java.util.prefs.FileSystemPreferences");
Method chmodMethod = fspClass.getDeclaredMethod("chmod", String.class, Integer.TYPE);
chmodMethod.setAccessible(true);
return (Integer) chmodMethod.invoke(null, filename, mode);
} catch (Throwable ex) {
return -1;
}
}
private void chmod(String file) throws Exception {
Set<PosixFilePermission> perms = ImmutableSet.of(PosixFilePermission.OWNER_READ,
PosixFilePermission.OWNER_WRITE, PosixFilePermission.GROUP_READ, PosixFilePermission.OTHERS_READ);
Files.setPosixFilePermissions(Paths.get(file), perms);
}