package com.beijunyi.parallelgit.filesystem.utils; import java.nio.file.attribute.FileAttribute; import java.nio.file.attribute.PosixFilePermission; import java.util.*; import javax.annotation.Nonnull; import static java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE; public class FileAttributeReader { private final Map<String, Object> attributeMap = new HashMap<>(); private FileAttributeReader(Collection<? extends FileAttribute> attributes) { for(FileAttribute attribute : attributes) attributeMap.put(attribute.name(), attribute.value()); } @Nonnull public static FileAttributeReader read(Collection<? extends FileAttribute> attributes) { return new FileAttributeReader(attributes); } @SuppressWarnings("unchecked") public boolean isExecutable() { Set<PosixFilePermission> permissions = (Set<PosixFilePermission>) attributeMap.get("posix:permissions"); return permissions != null && permissions.contains(OWNER_EXECUTE); } }