Java PosixFileAttributeView remove file permissions

Description

Java PosixFileAttributeView remove file permissions

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFileAttributeView;
import java.nio.file.attribute.PosixFileAttributes;
import java.nio.file.attribute.PosixFilePermission;
import java.util.Set;

public class Main {

   public static void main(String[] args) {
      Path path = Paths.get("home/docs/users.txt");
      listPermissions(path);/*from w  ww .ja v  a  2  s .c  o m*/
      removePermission(path, PosixFilePermission.OWNER_EXECUTE);
   }

   private static void removePermission(Path path, PosixFilePermission permission) {
      try {
         System.out.println("\nRemoving permission for " + path.getFileName());
         PosixFileAttributeView view = Files.getFileAttributeView(path, PosixFileAttributeView.class);

         PosixFileAttributes attributes = view.readAttributes();

         Set<PosixFilePermission> permissions = attributes.permissions();
         permissions.remove(permission);

         view.setPermissions(permissions);
         System.out.println();
      } catch (IOException ex) {
         ex.printStackTrace();
      }
   }

   private static void listPermissions(Path path) {
      try {
         System.out.println("Permission for " + path.getFileName());
         PosixFileAttributeView view = Files.getFileAttributeView(path, PosixFileAttributeView.class);
         PosixFileAttributes attributes = view.readAttributes();
         System.out.println("Group: " + attributes.group().getName());
         System.out.println("Owner: " + attributes.owner().getName());
         Set<PosixFilePermission> permissions = attributes.permissions();
         System.out.print("Permissions: ");
         for (PosixFilePermission permission : permissions) {
            System.out.print(permission.name() + " ");
         }
         System.out.println();
      } catch (IOException ex) {
         ex.printStackTrace();
      }
   }

}



PreviousNext

Related