package consulo.util.io2; import com.intellij.openapi.diagnostic.Logger; import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.attribute.PosixFilePermission; import java.util.EnumSet; import java.util.Set; /** * @author VISTALL * @since 31-Oct-16 */ public class PathUtil { public static final Logger LOGGER = Logger.getInstance(PathUtil.class); private static final boolean ourSupportPosixFilePermissions = FileSystems.getDefault().supportedFileAttributeViews().contains("posix"); public static boolean isSupportPosixFilePermissions() { return ourSupportPosixFilePermissions; } public static void setPosixFilePermissions(@NotNull Path path, @NotNull Set<PosixFilePermission> posixFilePermissions) { if (isSupportPosixFilePermissions()) { try { Files.setPosixFilePermissions(path, posixFilePermissions); } catch (IOException e) { LOGGER.error(e); } } } @NotNull public static Set<PosixFilePermission> convertModeToFilePermissions(int mode) { int mask = 1; Set<PosixFilePermission> perms = EnumSet.noneOf(PosixFilePermission.class); for (PosixFilePermission flag : PosixFilePermission.values()) { if (flag != null && (mask & mode) != 0) { perms.add(flag); } mask = mask << 1; } return perms; } }